-
Notifications
You must be signed in to change notification settings - Fork 357
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SVG sizes could be significantly smaller by reducing redundancies #2716
Labels
Comments
netil
added a commit
to netil/billboard.js
that referenced
this issue
Jun 14, 2022
Implement boost.useCssRule, which avoid setting element's style as inlined. Ref naver#2716
github-actions bot
pushed a commit
that referenced
this issue
Jun 22, 2022
# [3.5.0-next.2](3.5.0-next.1...3.5.0-next.2) (2022-06-22) ### Bug Fixes * **option:** Fix onresize/onresized call context ([3ef9684](3ef9684)), closes [#2726](#2726) * **plugin, type:** fix TextOverlap type definition ([80cc3b7](80cc3b7)) ### Features * **area:** add option to render area below line ([cf60291](cf60291)), closes [#2740](#2740) [#2741](#2741) * **option:** Intent to ship boost.useCssRule ([4a060d6](4a060d6)), closes [#2716](#2716) * **option:** Intent to ship boost.useWorker ([eeaf8bd](eeaf8bd))
github-actions bot
pushed a commit
that referenced
this issue
Jun 30, 2022
# [3.5.0](3.4.1...3.5.0) (2022-06-30) ### Bug Fixes * **bar:** fix bar radius for zero value ([9aa7579](9aa7579)), closes [#2642](#2642) * **build:** Fix this keyword transpile ([b65531a](b65531a)), closes [#2671](#2671) [#2664](#2664) [#2665](#2665) [#2666](#2666) [#2667](#2667) * **data:** Fix data label position on inverted axis ([b024d83](b024d83)), closes [#2700](#2700) * **grid:** Fix y grid to show for log axis type ([d0b8cbd](d0b8cbd)), closes [#2710](#2710) * **option:** Fix onresize/onresized call context ([3ef9684](3ef9684)), closes [#2726](#2726) * **plugin, type:** fix TextOverlap type definition ([80cc3b7](80cc3b7)) * **plugin:** fix sparkline dimension & tooltip ([79e1ab7](79e1ab7)), closes [#2682](#2682) * **plugin:** fix stanford tooltip formatting ([9a87464](9a87464)), closes [#2657](#2657) * **resize:** Fix legend resize ([7df949b](7df949b)), closes [#2650](#2650) * **scale:** fix getting tickOffset ([3091677](3091677)), closes [#2669](#2669) * **size.axis:** fix truncated axis when has no data ([40f4b66](40f4b66)), closes [#2675](#2675) * **types:** Fix `Chart.load({ json })` typing ([1bd4f4a](1bd4f4a)), closes [#2711](#2711) * **types:** Fix the signature of the tick format callback for timeseries ([c9c76e5](c9c76e5)), closes [#2676](#2676) * **types:** Fix the type for options.data.names ([e64f6bd](e64f6bd)), closes [#2677](#2677) * **types:** Fix types for the tooltip contents callback ([a0c0355](a0c0355)), closes [#2693](#2693) * **zoom:** fix wheel zoom feeling "stuck" when panning past the edge ([50ed640](50ed640)), closes [#2588](#2588) [#2648](#2648) ### Features * **area:** add option to render area below line ([cf60291](cf60291)), closes [#2740](#2740) [#2741](#2741) * **data:** Intent to ship data.labels.rotate ([7b7ee08](7b7ee08)), closes [#2662](#2662) * **option:** Intent to ship boost.useCssRule ([4a060d6](4a060d6)), closes [#2716](#2716) * **option:** Intent to ship boost.useWorker ([eeaf8bd](eeaf8bd)) * **resize:** Intent to ship resize.timer ([#2712](#2712)) ([0a07de0](0a07de0)), closes [#2650](#2650)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The SVG's created by billboard.js can be massive for decently large datasets, and just cutting down some of the unnecessary size would probably make everything smoother. I was using the
areaRangeChart
, although I'm sure this is applicable to many different kinds of charts.I looked at my generated circle elements and they all have two major sources of bloat:
class="bb-shape bb-shape-16 bb-circle bb-circle-16"
bb-shape
andbb-circle
should be removed in favor of a CSS rule with a selector likediv.bb circle
bb-shape-16
andbb-circle-16
are redundant, and should be removed. Keep in mind that a class is a template for an instance. If you need to give an element an id, it should go in theid
property. However, I think circle elements should not have an id, especially if the id is just e.g.16
. Perhaps the library should maintain an array of circles and identify them withcircles[16]
?style="fill: rgb(31, 119, 180); stroke: rgb(31, 119, 180);"
<g>
element (for each of the different colors) and placing the fill/stroke in the<g>
element.rgb(31, 119, 180)
could be converted to the hex#1f77b4
, since hex colors are shorter than their rgb counterpartsIn such cases, over a MB of unnecessary data could easily be removed.
P.S. https://vecta.io/nano is a good tool for compressing SVG's. Perhaps some tricks could be borrowed from it?
The text was updated successfully, but these errors were encountered: