Skip to content
Snippets Groups Projects
  • Cam Saul's avatar
    bf00aa99
    Backend SVG rendering proof of concept [ci skip] (#15781) · bf00aa99
    Cam Saul authored
    * Backend SVG rendering proof of concept [ci skip]
    
    * Update cssbox to 5.0.0
    
    * Render bar, line, and pie charts in js to svg
    
    sparkline is now done in js, bar is now recognized and done in js, new
    :categorical/donut as well
    
    * Remove api route for render
    
    * pass along render-type, not hardcoded to :inline
    
    * Move bar chart above sparkline and remove line check
    
    In order to introduce the bar chart type need it above the sparkline
    check since it is otherwise the same except for display property of
    the card. But lots of tests assume that this will get hit with a nil
    display type set in testing so remove checking for `:line` allows all
    the testing cases to hit the right type
    
    * Fix tests now that bar graphs aren't html but images
    
    * Include attachments for bar charts
    
    * Move over to in-tree bundle
    
    * Force everything [ci noskip]
    
    trying to ensure that the built jar includes the newer
    "resources/frontend_client/app/dist/lib-static-viz.bundle.js"
    
    * Run `yarn build-static-viz` in backend-deps in CI
    
    this js file is now a hard dependency of the backend so it fits in
    this tsk. All such things that depend on the backend sources will need
    it. Makes me think perhaps we want a checked in version but i'm not
    sure yet.
    
    * Look on classpath not filesystem for js bundle [ci noskip]
    
    * Move yarn build-static-viz into the checkout step
    
    * License information for antlr4-runtime
    
    * create attachment for categorical donuts
    
    * add ordinal legend to donuts (#17177)
    
    * set widths of html image and svg image to 1200
    
    * Revert "add ordinal legend to donuts (#17177)"
    
    This reverts commit 1eb81d2e.
    
    * Helper functions to render html easily
    
    * readme in dev
    
    * readme ensure that static viz bundle exists
    
    * Cleanup ns after removing proxy
    
    * Donut chart colors and legend (#17251)
    
    * use external color map for fill per dimension
    
    * Add support new color legend for donut
    
    * Ensure text doesn't appear as link
    
    entire thing is actually the body of a link tag for emails but we want
    a decent text color rather than a default link color
    
    * use chart colors from https://stats.metabase.com/_internal/colors
    
    
    
    * Make checkers happy
    
    - remove unused imports
    - add a docstring
    - don't shadow fn with a local
    
    * cleanup ns import
    
    * Remove reflective call
    
    * Cleanup ns on correct branch
    
    Co-authored-by: default avatardan sutton <dan@dpsutton.com>
    
    * X-axis: just use (approx) 5 ticks to avoid overlapping labels (#17287)
    
    * increase gap between arcs (#17271)
    
    * Set rendering hints on html->image
    
    * ignore width for now and make them larger
    
    * Ns deprecation and some cleanup
    
    * make namespace checker happy
    
    * Simple tests for detecting chart type
    
    * Rename from poc
    
    * Tests for scalar/smartscalar
    
    * cleanup js svg namespace a bit
    
    * Tests of svg engine
    
    * ns sorting after renaming
    
    * Unify our two different js engine usages
    
    settled on the js context. Has typed returns `(.asString ^Value ...)`
    instead of perhaps capturing std out?
    https://www.graalvm.org/sdk/javadoc/org/graalvm/polyglot/Value.html
    
    
    
    Context is a bit more friendly for getting source into it. One
    downside is that the invocable bit isn't quite as nice. The old way
    would return a java.util.functionFunction but the difference is
    
    (.apply function (object-array args))
    
    vs
    
    (.execute fn-ref (object-array args))
    
    * Don't io/resource the io/resource
    
    * js engine tests
    
    * Ns cleanup in js-svg
    
    type hints in the js-engine ns mean we don't need as many classes from
    polyglot here
    
    * Cleanup of text, ns docstrings, alignment
    
    * Fix fill->fill-opacity with parsed doc, not regex
    
    * Make a single helper that loads a static viz bundle context
    
    * Docstrings and make private in js-svg
    
    * Sort imported classes in js-svg
    
    * Make width passed down through rendering aparatus
    
    - svgs are always rendered at 1200 for quality
    - slack images of html are rendered at 1200 so that they can be zoomed
      in in the ui but slack automatically scales down
    - email sends html and the full svg but includes img width tags so
      that is handled appropriately
    
    * docstring
    
    Co-authored-by: default avatardan sutton <dan@dpsutton.com>
    Co-authored-by: default avatarKyle Doherty <5248953+kdoh@users.noreply.github.com>
    Co-authored-by: default avatarAriya Hidayat <ariya@metabase.com>
    Backend SVG rendering proof of concept [ci skip] (#15781)
    Cam Saul authored
    * Backend SVG rendering proof of concept [ci skip]
    
    * Update cssbox to 5.0.0
    
    * Render bar, line, and pie charts in js to svg
    
    sparkline is now done in js, bar is now recognized and done in js, new
    :categorical/donut as well
    
    * Remove api route for render
    
    * pass along render-type, not hardcoded to :inline
    
    * Move bar chart above sparkline and remove line check
    
    In order to introduce the bar chart type need it above the sparkline
    check since it is otherwise the same except for display property of
    the card. But lots of tests assume that this will get hit with a nil
    display type set in testing so remove checking for `:line` allows all
    the testing cases to hit the right type
    
    * Fix tests now that bar graphs aren't html but images
    
    * Include attachments for bar charts
    
    * Move over to in-tree bundle
    
    * Force everything [ci noskip]
    
    trying to ensure that the built jar includes the newer
    "resources/frontend_client/app/dist/lib-static-viz.bundle.js"
    
    * Run `yarn build-static-viz` in backend-deps in CI
    
    this js file is now a hard dependency of the backend so it fits in
    this tsk. All such things that depend on the backend sources will need
    it. Makes me think perhaps we want a checked in version but i'm not
    sure yet.
    
    * Look on classpath not filesystem for js bundle [ci noskip]
    
    * Move yarn build-static-viz into the checkout step
    
    * License information for antlr4-runtime
    
    * create attachment for categorical donuts
    
    * add ordinal legend to donuts (#17177)
    
    * set widths of html image and svg image to 1200
    
    * Revert "add ordinal legend to donuts (#17177)"
    
    This reverts commit 1eb81d2e.
    
    * Helper functions to render html easily
    
    * readme in dev
    
    * readme ensure that static viz bundle exists
    
    * Cleanup ns after removing proxy
    
    * Donut chart colors and legend (#17251)
    
    * use external color map for fill per dimension
    
    * Add support new color legend for donut
    
    * Ensure text doesn't appear as link
    
    entire thing is actually the body of a link tag for emails but we want
    a decent text color rather than a default link color
    
    * use chart colors from https://stats.metabase.com/_internal/colors
    
    
    
    * Make checkers happy
    
    - remove unused imports
    - add a docstring
    - don't shadow fn with a local
    
    * cleanup ns import
    
    * Remove reflective call
    
    * Cleanup ns on correct branch
    
    Co-authored-by: default avatardan sutton <dan@dpsutton.com>
    
    * X-axis: just use (approx) 5 ticks to avoid overlapping labels (#17287)
    
    * increase gap between arcs (#17271)
    
    * Set rendering hints on html->image
    
    * ignore width for now and make them larger
    
    * Ns deprecation and some cleanup
    
    * make namespace checker happy
    
    * Simple tests for detecting chart type
    
    * Rename from poc
    
    * Tests for scalar/smartscalar
    
    * cleanup js svg namespace a bit
    
    * Tests of svg engine
    
    * ns sorting after renaming
    
    * Unify our two different js engine usages
    
    settled on the js context. Has typed returns `(.asString ^Value ...)`
    instead of perhaps capturing std out?
    https://www.graalvm.org/sdk/javadoc/org/graalvm/polyglot/Value.html
    
    
    
    Context is a bit more friendly for getting source into it. One
    downside is that the invocable bit isn't quite as nice. The old way
    would return a java.util.functionFunction but the difference is
    
    (.apply function (object-array args))
    
    vs
    
    (.execute fn-ref (object-array args))
    
    * Don't io/resource the io/resource
    
    * js engine tests
    
    * Ns cleanup in js-svg
    
    type hints in the js-engine ns mean we don't need as many classes from
    polyglot here
    
    * Cleanup of text, ns docstrings, alignment
    
    * Fix fill->fill-opacity with parsed doc, not regex
    
    * Make a single helper that loads a static viz bundle context
    
    * Docstrings and make private in js-svg
    
    * Sort imported classes in js-svg
    
    * Make width passed down through rendering aparatus
    
    - svgs are always rendered at 1200 for quality
    - slack images of html are rendered at 1200 so that they can be zoomed
      in in the ui but slack automatically scales down
    - email sends html and the full svg but includes img width tags so
      that is handled appropriately
    
    * docstring
    
    Co-authored-by: default avatardan sutton <dan@dpsutton.com>
    Co-authored-by: default avatarKyle Doherty <5248953+kdoh@users.noreply.github.com>
    Co-authored-by: default avatarAriya Hidayat <ariya@metabase.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.