@amcharts/amcharts5 5.16.0 → 5.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.internal/charts/flow/Chord.d.ts.map +1 -1
- package/.internal/charts/flow/Chord.js +15 -17
- package/.internal/charts/flow/Chord.js.map +1 -1
- package/.internal/charts/hierarchy/Hierarchy.d.ts +21 -0
- package/.internal/charts/hierarchy/Hierarchy.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Hierarchy.js +60 -3
- package/.internal/charts/hierarchy/Hierarchy.js.map +1 -1
- package/.internal/charts/hierarchy/HierarchyDefaultTheme.d.ts.map +1 -1
- package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +1 -0
- package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
- package/.internal/charts/hierarchy/LinkedHierarchy.d.ts +1 -0
- package/.internal/charts/hierarchy/LinkedHierarchy.d.ts.map +1 -1
- package/.internal/charts/hierarchy/LinkedHierarchy.js +9 -9
- package/.internal/charts/hierarchy/LinkedHierarchy.js.map +1 -1
- package/.internal/charts/hierarchy/Tree.d.ts +20 -0
- package/.internal/charts/hierarchy/Tree.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Tree.js +11 -1
- package/.internal/charts/hierarchy/Tree.js.map +1 -1
- package/.internal/charts/hierarchy/Treemap.d.ts +1 -1
- package/.internal/charts/hierarchy/Treemap.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Treemap.js +9 -7
- package/.internal/charts/hierarchy/Treemap.js.map +1 -1
- package/.internal/charts/map/ClusteredPointSeries.d.ts +0 -2
- package/.internal/charts/map/ClusteredPointSeries.d.ts.map +1 -1
- package/.internal/charts/map/ClusteredPointSeries.js +117 -55
- package/.internal/charts/map/ClusteredPointSeries.js.map +1 -1
- package/.internal/charts/map/MapPointSeries.d.ts.map +1 -1
- package/.internal/charts/map/MapPointSeries.js +2 -0
- package/.internal/charts/map/MapPointSeries.js.map +1 -1
- package/.internal/charts/wordcloud/WordCloud.d.ts +1 -1
- package/.internal/charts/wordcloud/WordCloud.d.ts.map +1 -1
- package/.internal/charts/wordcloud/WordCloud.js +18 -24
- package/.internal/charts/wordcloud/WordCloud.js.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.js +7 -3
- package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
- package/.internal/charts/xy/axes/GaplessDateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/GaplessDateAxis.js +11 -4
- package/.internal/charts/xy/axes/GaplessDateAxis.js.map +1 -1
- package/.internal/charts/xy/axes/ValueAxis.d.ts +15 -2
- package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/ValueAxis.js +102 -79
- package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
- package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/LineSeries.js +8 -6
- package/.internal/charts/xy/series/LineSeries.js.map +1 -1
- package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/XYSeries.js +13 -5
- package/.internal/charts/xy/series/XYSeries.js.map +1 -1
- package/.internal/core/Registry.js +1 -1
- package/.internal/core/Registry.js.map +1 -1
- package/.internal/core/Root.d.ts +1 -1
- package/.internal/core/Root.d.ts.map +1 -1
- package/.internal/core/Root.js +12 -10
- package/.internal/core/Root.js.map +1 -1
- package/.internal/core/util/Array.d.ts.map +1 -1
- package/.internal/core/util/Array.js +5 -2
- package/.internal/core/util/Array.js.map +1 -1
- package/.internal/core/util/PopulateString.d.ts +23 -1
- package/.internal/core/util/PopulateString.d.ts.map +1 -1
- package/.internal/core/util/PopulateString.js +19 -5
- package/.internal/core/util/PopulateString.js.map +1 -1
- package/CHANGELOG.md +22 -0
- package/README.md +12 -0
- package/examples/javascript/flow-arc-horizontal/package.json +1 -1
- package/examples/javascript/flow-arc-vertical/package.json +1 -1
- package/examples/javascript/flow-chord/package.json +1 -1
- package/examples/javascript/flow-chord-directed/package.json +1 -1
- package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/javascript/flow-sankey/package.json +1 -1
- package/examples/javascript/gantt/package.json +1 -1
- package/examples/javascript/gantt-multilevel/package.json +1 -1
- package/examples/javascript/gantt-simple/package.json +1 -1
- package/examples/javascript/gauge/package.json +1 -1
- package/examples/javascript/gauge-bands/package.json +1 -1
- package/examples/javascript/hierarchy-force-directed/package.json +1 -1
- package/examples/javascript/hierarchy-pack/package.json +1 -1
- package/examples/javascript/hierarchy-partition/package.json +1 -1
- package/examples/javascript/hierarchy-sunburst/package.json +1 -1
- package/examples/javascript/hierarchy-tree/package.json +1 -1
- package/examples/javascript/hierarchy-treemap/package.json +1 -1
- package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/javascript/jest/package.json +1 -1
- package/examples/javascript/json-pie/package.json +1 -1
- package/examples/javascript/json-xy/package.json +1 -1
- package/examples/javascript/map-animating-along-lines/package.json +1 -1
- package/examples/javascript/map-clustered-points/package.json +1 -1
- package/examples/javascript/map-day-and-night/package.json +1 -1
- package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/javascript/map-with-bubbles/package.json +1 -1
- package/examples/javascript/map-zoom-to-country/package.json +1 -1
- package/examples/javascript/misc-40-charts/package.json +1 -1
- package/examples/javascript/misc-microchart-grid/package.json +1 -1
- package/examples/javascript/pie-chart/package.json +1 -1
- package/examples/javascript/pie-donut-chart/package.json +1 -1
- package/examples/javascript/pie-variable-radius/package.json +1 -1
- package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
- package/examples/javascript/radar-heat-map/package.json +1 -1
- package/examples/javascript/radar-line/package.json +1 -1
- package/examples/javascript/radar-time-line/package.json +1 -1
- package/examples/javascript/sliced-funnel/package.json +1 -1
- package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/javascript/sliced-pyramid/package.json +1 -1
- package/examples/javascript/stock-chart/package.json +1 -1
- package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
- package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
- package/examples/javascript/stock-chart-intraday/package.json +1 -1
- package/examples/javascript/stock-chart-live/package.json +1 -1
- package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-spiral-chart/package.json +1 -1
- package/examples/javascript/venn-diagram/package.json +1 -1
- package/examples/javascript/wordcloud-with-data/package.json +1 -1
- package/examples/javascript/wordcloud-with-text/package.json +1 -1
- package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/javascript/xy-bubble/package.json +1 -1
- package/examples/javascript/xy-candlestick/package.json +1 -1
- package/examples/javascript/xy-clustered-column/package.json +1 -1
- package/examples/javascript/xy-column/package.json +1 -1
- package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/javascript/xy-data-grouping/package.json +1 -1
- package/examples/javascript/xy-draggable-range/package.json +1 -1
- package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/javascript/xy-dumbbell plot/package.json +1 -1
- package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/javascript/xy-line/package.json +1 -1
- package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/javascript/xy-live-data/package.json +1 -1
- package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/javascript/xy-ohlc/package.json +1 -1
- package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/javascript/xy-smoothed-line/package.json +1 -1
- package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/javascript/xy-stacked-column/package.json +1 -1
- package/examples/javascript/xy-stacked-step/package.json +1 -1
- package/examples/javascript/xy-stock/package.json +1 -1
- package/examples/javascript/xy-stock-comparing/package.json +1 -1
- package/examples/typescript/flow-arc-horizontal/package.json +1 -1
- package/examples/typescript/flow-arc-vertical/package.json +1 -1
- package/examples/typescript/flow-chord/package.json +1 -1
- package/examples/typescript/flow-chord-directed/package.json +1 -1
- package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/typescript/flow-sankey/package.json +1 -1
- package/examples/typescript/gantt/package.json +1 -1
- package/examples/typescript/gantt-multilevel/package.json +1 -1
- package/examples/typescript/gantt-simple/package.json +1 -1
- package/examples/typescript/gauge/package.json +1 -1
- package/examples/typescript/gauge-bands/package.json +1 -1
- package/examples/typescript/hierarchy-force-directed/package.json +1 -1
- package/examples/typescript/hierarchy-pack/package.json +1 -1
- package/examples/typescript/hierarchy-partition/package.json +1 -1
- package/examples/typescript/hierarchy-sunburst/package.json +1 -1
- package/examples/typescript/hierarchy-tree/package.json +1 -1
- package/examples/typescript/hierarchy-treemap/package.json +1 -1
- package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/typescript/jest/package.json +1 -1
- package/examples/typescript/json-pie/package.json +1 -1
- package/examples/typescript/json-xy/package.json +1 -1
- package/examples/typescript/map-animating-along-lines/package.json +1 -1
- package/examples/typescript/map-clustered-points/package.json +1 -1
- package/examples/typescript/map-day-and-night/package.json +1 -1
- package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/typescript/map-with-bubbles/package.json +1 -1
- package/examples/typescript/map-zoom-to-country/package.json +1 -1
- package/examples/typescript/misc-40-charts/package.json +1 -1
- package/examples/typescript/misc-microchart-grid/package.json +1 -1
- package/examples/typescript/pie-chart/package.json +1 -1
- package/examples/typescript/pie-donut-chart/package.json +1 -1
- package/examples/typescript/pie-variable-radius/package.json +1 -1
- package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
- package/examples/typescript/radar-heat-map/package.json +1 -1
- package/examples/typescript/radar-line/package.json +1 -1
- package/examples/typescript/radar-time-line/package.json +1 -1
- package/examples/typescript/sliced-funnel/package.json +1 -1
- package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/typescript/sliced-pyramid/package.json +1 -1
- package/examples/typescript/stock-chart/package.json +1 -1
- package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
- package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
- package/examples/typescript/stock-chart-intraday/package.json +1 -1
- package/examples/typescript/stock-chart-live/package.json +1 -1
- package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-spiral-chart/package.json +1 -1
- package/examples/typescript/venn-diagram/package.json +1 -1
- package/examples/typescript/wordcloud-with-data/package.json +1 -1
- package/examples/typescript/wordcloud-with-text/package.json +1 -1
- package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/typescript/xy-bubble/package.json +1 -1
- package/examples/typescript/xy-candlestick/package.json +1 -1
- package/examples/typescript/xy-clustered-column/package.json +1 -1
- package/examples/typescript/xy-column/package.json +1 -1
- package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/typescript/xy-data-grouping/package.json +1 -1
- package/examples/typescript/xy-draggable-range/package.json +1 -1
- package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/typescript/xy-dumbbell plot/package.json +1 -1
- package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/typescript/xy-line/package.json +1 -1
- package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/typescript/xy-live-data/package.json +1 -1
- package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/typescript/xy-ohlc/package.json +1 -1
- package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/typescript/xy-smoothed-line/package.json +1 -1
- package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/typescript/xy-stacked-column/package.json +1 -1
- package/examples/typescript/xy-stacked-step/package.json +1 -1
- package/examples/typescript/xy-stock/package.json +1 -1
- package/examples/typescript/xy-stock-comparing/package.json +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Treemap.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Treemap.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HierarchyNode } from \"./HierarchyNode\";\nimport type { DataItem } from \"../../core/render/Component\";\n\nimport { Hierarchy, IHierarchyPrivate, IHierarchySettings, IHierarchyDataItem, IHierarchyDataObject } from \"./Hierarchy\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as d3hierarchy from \"d3-hierarchy\";\n\nexport interface ITreemapDataObject { name?: string, value?: number, children?: ITreemapDataObject[], dataItem?: DataItem<ITreemapDataItem> };\n\nexport interface ITreemapDataItem extends IHierarchyDataItem {\n\tchildren: Array<DataItem<ITreemapDataItem>>;\n\tparent: DataItem<ITreemapDataItem>;\n\td3HierarchyNode: d3hierarchy.HierarchyRectangularNode<IHierarchyDataObject>;\n\trectangle: RoundedRectangle;\n}\n\nexport interface ITreemapSettings extends IHierarchySettings {\n\n\t/**\n\t * Gap between nodes. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingInner?: number;\n\n\t/**\n\t * Gap between nodes and outer edge of the chart. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingOuter?: number;\n\n\t/**\n\t * Gap between nodes and top edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingTop?: number;\n\n\t/**\n\t * Gap between nodes and bottomedge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingBottom?: number;\n\n\t/**\n\t * Gap between nodes and left edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingLeft?: number;\n\n\t/**\n\t * Gap between nodes and bottom edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingRight?: number;\n\n\t/**\n\t * An algorithm to use when laying out node rectangles.\n\t *\n\t * @see {@link }\n\t * @default \"squarify\"\n\t */\n\tlayoutAlgorithm?: \"binary\" | \"squarify\" | \"slice\" | \"dice\" | \"sliceDice\";\n\n}\n\nexport interface ITreemapPrivate extends IHierarchyPrivate {\n\n\t/**\n\t * Current horizontal scale.\n\t */\n\tscaleX?: number;\n\n\t/**\n\t * Current vertical scale.\n\t */\n\tscaleY?: number;\n\n}\n\n/**\n * Treemap series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/} for more info\n */\nexport class Treemap extends Hierarchy {\n\n\tdeclare public _settings: ITreemapSettings;\n\tdeclare public _privateSettings: ITreemapPrivate;\n\tdeclare public _dataItemSettings: ITreemapDataItem;\n\n\tprotected _tag: string = \"treemap\";\n\n\tpublic static className: string = \"Treemap\";\n\tpublic static classNames: Array<string> = Hierarchy.classNames.concat([Treemap.className]);\n\n\tpublic readonly rectangleTemplate: Template<RoundedRectangle> = Template.new({});\n\n\tpublic _treemapLayout = d3hierarchy.treemap().tile(d3hierarchy.treemapSquarify);\n\n\tdeclare public _rootNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject> | undefined;\n\n\t/**\n\t * A list of node rectangle elements in a [[Treemap]] chart.\n\t *\n\t * @default new ListTemplate<RoundedRectangle>\n\t */\n\tpublic readonly rectangles: ListTemplate<RoundedRectangle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => RoundedRectangle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.rectangles.template.get(\"themeTags\", []), [this._tag, \"shape\"])\n\t\t}, [this.rectangles.template])\n\t));\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.setPrivate(\"scaleX\", 1);\n\t\tthis.setPrivate(\"scaleY\", 1);\n\n\t\tthis.nodes.template.setPrivate(\"trustBounds\", true);\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this.isDirty(\"layoutAlgorithm\")) {\n\t\t\tlet algorithm;\n\n\t\t\tswitch (this.get(\"layoutAlgorithm\")) {\n\t\t\t\tcase \"squarify\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSquarify;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"binary\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapBinary;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"slice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSlice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapDice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sliceDice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSliceDice;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (algorithm) {\n\t\t\t\tthis._treemapLayout = d3hierarchy.treemap().tile(algorithm);\n\t\t\t\tthis._updateVisuals();\n\n\t\t\t\tconst selectedDataItem = this.get(\"selectedDataItem\") as DataItem<this[\"_dataItemSettings\"]>;\n\t\t\t\tif (selectedDataItem) {\n\t\t\t\t\tthis._zoom(selectedDataItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"nodePaddingRight\") || this.isDirty(\"nodePaddingLeft\") || this.isDirty(\"nodePaddingTop\") || this.isDirty(\"nodePaddingBottom\") || this.isDirty(\"nodePaddingOuter\") || this.isDirty(\"nodePaddingInner\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodes(this._rootNode);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isPrivateDirty(\"scaleX\") || this.isPrivateDirty(\"scaleY\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodesScale(this._rootNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _updateVisuals() {\n\t\tif (this._rootNode) {\n\t\t\tconst treemapLayout = this._treemapLayout;\n\t\t\ttreemapLayout.size([this.innerWidth(), this.innerHeight()]);\n\n\t\t\tconst paddingLeft = this.get(\"nodePaddingLeft\");\n\t\t\tconst paddingRight = this.get(\"nodePaddingRight\");\n\t\t\tconst paddingTop = this.get(\"nodePaddingTop\");\n\t\t\tconst paddingBottom = this.get(\"nodePaddingBottom\");\n\t\t\tconst paddingInner = this.get(\"nodePaddingInner\");\n\t\t\tconst paddingOuter = this.get(\"nodePaddingOuter\");\n\t\t\tif ($type.isNumber(paddingLeft)) {\n\t\t\t\ttreemapLayout.paddingLeft(paddingLeft);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingRight)) {\n\t\t\t\ttreemapLayout.paddingRight(paddingRight);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingTop)) {\n\t\t\t\ttreemapLayout.paddingTop(paddingTop);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingBottom)) {\n\t\t\t\ttreemapLayout.paddingBottom(paddingBottom);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingInner)) {\n\t\t\t\ttreemapLayout.paddingInner(paddingInner);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingOuter)) {\n\t\t\t\ttreemapLayout.paddingOuter(paddingOuter);\n\t\t\t}\n\n\t\t\ttreemapLayout(this._rootNode);\n\t\t\tthis._updateNodes(this._rootNode);\n\t\t}\n\t}\n\n\tprotected _updateNode(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._updateNode(dataItem);\n\n\t\tconst node = dataItem.get(\"node\");\n\t\tconst rectangle = dataItem.get(\"rectangle\");\n\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\tconst w = x1 - x0;\n\t\tconst h = y1 - y0;\n\n\t\tconst duration = this.get(\"animationDuration\", 0);\n\t\tconst easing = this.get(\"animationEasing\");\n\n\t\tnode.animate({ key: \"x\", to: x0, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"y\", to: y0, duration: duration, easing: easing })\n\n\t\tnode.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\n\t\tif (rectangle) {\n\t\t\tconst fill = dataItem.get(\"fill\");\n\t\t\tconst fillPattern = dataItem.get(\"fillPattern\");\n\n\t\t\trectangle.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\t\trectangle.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\t\t\trectangle._setDefault(\"fill\", fill);\n\t\t\trectangle._setDefault(\"fillPattern\", fillPattern);\n\t\t\trectangle._setDefault(\"stroke\", fill);\n\t\t}\n\t}\n\n\n\tprotected _updateNodesScale(hierarchyNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject>) {\n\t\tconst dataItem = hierarchyNode.data.dataItem;\n\t\tif (dataItem) {\n\t\t\tconst node = dataItem.get(\"node\");\n\t\t\tconst rectangle = dataItem.get(\"rectangle\");\n\n\t\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\t\tconst w = x1 - x0;\n\t\t\tconst h = y1 - y0;\n\n\t\t\tnode.setAll({ x: x0, y: y0, width: w, height: h });\n\t\t\trectangle.setAll({ width: w, height: h });\n\n\t\t\tconst hierarchyChildren = hierarchyNode.children;\n\t\t\tif (hierarchyChildren) {\n\t\t\t\t$array.each(hierarchyChildren, (hierarchyChild) => {\n\t\t\t\t\tthis._updateNodesScale(hierarchyChild)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeNode(dataItem: DataItem<this[\"_dataItemSettings\"]>): HierarchyNode {\n\t\tconst node = super.makeNode(dataItem);\n\n\t\tconst rectangle = node.children.moveValue(this.rectangles.make(), 0);\n\n\t\tnode.setPrivate(\"tooltipTarget\", rectangle);\n\t\tdataItem.setRaw(\"rectangle\", rectangle);\n\n\t\tconst label = dataItem.get(\"label\");\n\n\t\trectangle.on(\"width\", () => {\n\t\t\tlabel.setPrivate(\"maxWidth\", rectangle.width());\n\t\t})\n\n\t\trectangle.on(\"height\", () => {\n\t\t\tlabel.setPrivate(\"maxHeight\", rectangle.height());\n\t\t})\n\n\t\treturn node;\n\t}\n\n\tpublic _zoom(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tif (this.width() > 0 && this.height() > 0) {\n\t\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\t\tconst nodePaddingOuter = this.get(\"nodePaddingOuter\", 0);\n\n\t\t\tlet x0 = hierarchyNode.x0 + nodePaddingOuter;\n\t\t\tlet x1 = hierarchyNode.x1 - nodePaddingOuter;\n\n\t\t\tlet y0 = hierarchyNode.y0 + nodePaddingOuter;\n\t\t\tlet y1 = hierarchyNode.y1 - nodePaddingOuter;\n\n\t\t\tlet scaleX = (this.innerWidth() - nodePaddingOuter * 2) / (x1 - x0);\n\t\t\tlet scaleY = (this.innerHeight() - nodePaddingOuter * 2) / (y1 - y0);\n\n\t\t\tconst easing = this.get(\"animationEasing\");\n\t\t\tlet duration = this.get(\"animationDuration\", 0);\n\n\t\t\tif (!this.inited) {\n\t\t\t\tduration = 0;\n\t\t\t}\n\n\t\t\tthis.animatePrivate({ key: \"scaleX\", to: scaleX, duration: duration, easing: easing });\n\t\t\tthis.animatePrivate({ key: \"scaleY\", to: scaleY, duration: duration, easing: easing });\n\n\t\t\tthis.nodesContainer.animate({ key: \"x\", to: nodePaddingOuter - x0 * scaleX, duration: duration, easing: easing });\n\t\t\tthis.nodesContainer.animate({ key: \"y\", to: nodePaddingOuter - y0 * scaleY, duration: duration, easing: easing });\n\t\t}\n\t}\n\n\tprotected _selectDataItem(dataItem?: DataItem<this[\"_dataItemSettings\"]>, downDepth?: number, skipDisptach?: boolean) {\n\t\tsuper._selectDataItem(dataItem, downDepth, skipDisptach);\n\n\t\tif (dataItem) {\n\t\t\tlet maxDepth = this.get(\"downDepth\", 1) + dataItem.get(\"depth\");\n\t\t\tif (!this.inited) {\n\t\t\t\tmaxDepth = this.get(\"initialDepth\", 1);\n\t\t\t}\n\t\t\tconst visibleNodes = this._getVisibleNodes(dataItem, maxDepth);\n\t\t\tthis.nodes.each((node) => {\n\t\t\t\tif (visibleNodes.indexOf(node.dataItem as DataItem<this[\"_dataItemSettings\"]>) == -1) {\n\t\t\t\t\tnode.setPrivate(\"focusable\", false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.removePrivate(\"focusable\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis._root._invalidateTabindexes();\n\t}\n\n\tprotected _getVisibleNodes(dataItem: DataItem<this[\"_dataItemSettings\"]>, maxDepth: number) {\n\t\tconst children = dataItem.get(\"children\");\n\t\tlet includedChildren: Array<DataItem<this[\"_dataItemSettings\"]>> = [];\n\t\tif (children) {\n\t\t\t$array.each(children, (child) => {\n\t\t\t\tif (child.get(\"depth\") == maxDepth || !child.get(\"children\")) {\n\t\t\t\t\tincludedChildren.push(child);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tincludedChildren = includedChildren.concat(this._getVisibleNodes(child, maxDepth));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn includedChildren;\n\t}\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Treemap.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Treemap.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HierarchyNode } from \"./HierarchyNode\";\nimport type { DataItem } from \"../../core/render/Component\";\n\nimport { Hierarchy, IHierarchyPrivate, IHierarchySettings, IHierarchyDataItem, IHierarchyDataObject } from \"./Hierarchy\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as d3hierarchy from \"d3-hierarchy\";\n\nexport interface ITreemapDataObject { name?: string, value?: number, children?: ITreemapDataObject[], dataItem?: DataItem<ITreemapDataItem> };\n\nexport interface ITreemapDataItem extends IHierarchyDataItem {\n\tchildren: Array<DataItem<ITreemapDataItem>>;\n\tparent: DataItem<ITreemapDataItem>;\n\td3HierarchyNode: d3hierarchy.HierarchyRectangularNode<IHierarchyDataObject>;\n\trectangle: RoundedRectangle;\n}\n\nexport interface ITreemapSettings extends IHierarchySettings {\n\n\t/**\n\t * Gap between nodes. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingInner?: number;\n\n\t/**\n\t * Gap between nodes and outer edge of the chart. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingOuter?: number;\n\n\t/**\n\t * Gap between nodes and top edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingTop?: number;\n\n\t/**\n\t * Gap between nodes and bottomedge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingBottom?: number;\n\n\t/**\n\t * Gap between nodes and left edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingLeft?: number;\n\n\t/**\n\t * Gap between nodes and bottom edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingRight?: number;\n\n\t/**\n\t * An algorithm to use when laying out node rectangles.\n\t *\n\t * @see {@link }\n\t * @default \"squarify\"\n\t */\n\tlayoutAlgorithm?: \"binary\" | \"squarify\" | \"slice\" | \"dice\" | \"sliceDice\";\n\n}\n\nexport interface ITreemapPrivate extends IHierarchyPrivate {\n\n\t/**\n\t * Current horizontal scale.\n\t */\n\tscaleX?: number;\n\n\t/**\n\t * Current vertical scale.\n\t */\n\tscaleY?: number;\n\n}\n\n/**\n * Treemap series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/} for more info\n */\nexport class Treemap extends Hierarchy {\n\n\tdeclare public _settings: ITreemapSettings;\n\tdeclare public _privateSettings: ITreemapPrivate;\n\tdeclare public _dataItemSettings: ITreemapDataItem;\n\n\tprotected _tag: string = \"treemap\";\n\n\tpublic static className: string = \"Treemap\";\n\tpublic static classNames: Array<string> = Hierarchy.classNames.concat([Treemap.className]);\n\n\tpublic readonly rectangleTemplate: Template<RoundedRectangle> = Template.new({});\n\n\tpublic _treemapLayout = d3hierarchy.treemap().tile(d3hierarchy.treemapSquarify);\n\n\tdeclare public _rootNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject> | undefined;\n\n\t/**\n\t * A list of node rectangle elements in a [[Treemap]] chart.\n\t *\n\t * @default new ListTemplate<RoundedRectangle>\n\t */\n\tpublic readonly rectangles: ListTemplate<RoundedRectangle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => RoundedRectangle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.rectangles.template.get(\"themeTags\", []), [this._tag, \"shape\"])\n\t\t}, [this.rectangles.template])\n\t));\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.setPrivate(\"scaleX\", 1);\n\t\tthis.setPrivate(\"scaleY\", 1);\n\n\t\tthis.nodes.template.setPrivate(\"trustBounds\", true);\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this.isDirty(\"layoutAlgorithm\")) {\n\t\t\tlet algorithm;\n\n\t\t\tswitch (this.get(\"layoutAlgorithm\")) {\n\t\t\t\tcase \"squarify\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSquarify;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"binary\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapBinary;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"slice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSlice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapDice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sliceDice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSliceDice;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (algorithm) {\n\t\t\t\tthis._treemapLayout = d3hierarchy.treemap().tile(algorithm);\n\t\t\t\tthis._updateVisuals();\n\n\t\t\t\tconst selectedDataItem = this.get(\"selectedDataItem\") as DataItem<this[\"_dataItemSettings\"]>;\n\t\t\t\tif (selectedDataItem) {\n\t\t\t\t\tthis._zoom(selectedDataItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"nodePaddingRight\") || this.isDirty(\"nodePaddingLeft\") || this.isDirty(\"nodePaddingTop\") || this.isDirty(\"nodePaddingBottom\") || this.isDirty(\"nodePaddingOuter\") || this.isDirty(\"nodePaddingInner\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodes(this._rootNode);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isPrivateDirty(\"scaleX\") || this.isPrivateDirty(\"scaleY\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodesScale(this._rootNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _updateVisuals() {\n\t\tif (this._rootNode) {\n\t\t\tconst treemapLayout = this._treemapLayout;\n\t\t\ttreemapLayout.size([this.innerWidth(), this.innerHeight()]);\n\n\t\t\tconst paddingLeft = this.get(\"nodePaddingLeft\");\n\t\t\tconst paddingRight = this.get(\"nodePaddingRight\");\n\t\t\tconst paddingTop = this.get(\"nodePaddingTop\");\n\t\t\tconst paddingBottom = this.get(\"nodePaddingBottom\");\n\t\t\tconst paddingInner = this.get(\"nodePaddingInner\");\n\t\t\tconst paddingOuter = this.get(\"nodePaddingOuter\");\n\t\t\tif ($type.isNumber(paddingLeft)) {\n\t\t\t\ttreemapLayout.paddingLeft(paddingLeft);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingRight)) {\n\t\t\t\ttreemapLayout.paddingRight(paddingRight);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingTop)) {\n\t\t\t\ttreemapLayout.paddingTop(paddingTop);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingBottom)) {\n\t\t\t\ttreemapLayout.paddingBottom(paddingBottom);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingInner)) {\n\t\t\t\ttreemapLayout.paddingInner(paddingInner);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingOuter)) {\n\t\t\t\ttreemapLayout.paddingOuter(paddingOuter);\n\t\t\t}\n\n\t\t\ttreemapLayout(this._rootNode);\n\t\t\tthis._updateNodes(this._rootNode);\n\t\t}\n\t}\n\n\tprotected _updateNode(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._updateNode(dataItem);\n\n\t\tconst node = dataItem.get(\"node\");\n\t\tconst rectangle = dataItem.get(\"rectangle\");\n\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\tconst w = x1 - x0;\n\t\tconst h = y1 - y0;\n\n\t\tconst duration = this.get(\"animationDuration\", 0);\n\t\tconst easing = this.get(\"animationEasing\");\n\n\t\tnode.animate({ key: \"x\", to: x0, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"y\", to: y0, duration: duration, easing: easing })\n\n\t\tnode.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\n\t\tif (rectangle) {\n\t\t\tconst fill = dataItem.get(\"fill\");\n\t\t\tconst fillPattern = dataItem.get(\"fillPattern\");\n\n\t\t\trectangle.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\t\trectangle.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\t\t\trectangle._setDefault(\"fill\", fill);\n\t\t\trectangle._setDefault(\"fillPattern\", fillPattern);\n\t\t\trectangle._setDefault(\"stroke\", fill);\n\t\t}\n\t}\n\n\n\tprotected _updateNodesScale(hierarchyNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject>) {\n\t\tconst dataItem = hierarchyNode.data.dataItem;\n\t\tif (dataItem) {\n\t\t\tconst node = dataItem.get(\"node\");\n\t\t\tconst rectangle = dataItem.get(\"rectangle\");\n\n\t\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\t\tconst w = x1 - x0;\n\t\t\tconst h = y1 - y0;\n\n\t\t\tnode.setAll({ x: x0, y: y0, width: w, height: h });\n\t\t\trectangle.setAll({ width: w, height: h });\n\n\t\t\tconst hierarchyChildren = hierarchyNode.children;\n\t\t\tif (hierarchyChildren) {\n\t\t\t\t$array.each(hierarchyChildren, (hierarchyChild) => {\n\t\t\t\t\tthis._updateNodesScale(hierarchyChild)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeNode(dataItem: DataItem<this[\"_dataItemSettings\"]>): HierarchyNode {\n\t\tconst node = super.makeNode(dataItem);\n\n\t\tconst rectangle = node.children.moveValue(this.rectangles.make(), 0);\n\n\t\tnode.setPrivate(\"tooltipTarget\", rectangle);\n\t\tdataItem.setRaw(\"rectangle\", rectangle);\n\n\t\tconst label = dataItem.get(\"label\");\n\n\t\trectangle.on(\"width\", () => {\n\t\t\tlabel.setPrivate(\"maxWidth\", rectangle.width());\n\t\t})\n\n\t\trectangle.on(\"height\", () => {\n\t\t\tlabel.setPrivate(\"maxHeight\", rectangle.height());\n\t\t})\n\n\t\treturn node;\n\t}\n\n\tpublic _zoom(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tif (this.width() > 0 && this.height() > 0) {\n\t\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\t\tconst nodePaddingOuter = this.get(\"nodePaddingOuter\", 0);\n\n\t\t\tlet x0 = hierarchyNode.x0 + nodePaddingOuter;\n\t\t\tlet x1 = hierarchyNode.x1 - nodePaddingOuter;\n\n\t\t\tlet y0 = hierarchyNode.y0 + nodePaddingOuter;\n\t\t\tlet y1 = hierarchyNode.y1 - nodePaddingOuter;\n\n\t\t\tlet scaleX = (this.innerWidth() - nodePaddingOuter * 2) / (x1 - x0);\n\t\t\tlet scaleY = (this.innerHeight() - nodePaddingOuter * 2) / (y1 - y0);\n\n\t\t\tconst easing = this.get(\"animationEasing\");\n\t\t\tlet duration = this.get(\"animationDuration\", 0);\n\n\t\t\tif (!this.inited) {\n\t\t\t\tduration = 0;\n\t\t\t}\n\n\t\t\tthis.animatePrivate({ key: \"scaleX\", to: scaleX, duration: duration, easing: easing });\n\t\t\tthis.animatePrivate({ key: \"scaleY\", to: scaleY, duration: duration, easing: easing });\n\n\t\t\tthis.nodesContainer.animate({ key: \"x\", to: nodePaddingOuter - x0 * scaleX, duration: duration, easing: easing });\n\t\t\tthis.nodesContainer.animate({ key: \"y\", to: nodePaddingOuter - y0 * scaleY, duration: duration, easing: easing });\n\t\t}\n\t}\n\n\tprotected _selectDataItem(dataItem?: DataItem<this[\"_dataItemSettings\"]>, downDepth?: number, skipDisptach?: boolean) {\n\t\tsuper._selectDataItem(dataItem, downDepth, skipDisptach);\n\n\t\tif (dataItem) {\n\t\t\tlet maxDepth = this.get(\"downDepth\", 1) + dataItem.get(\"depth\");\n\t\t\tif (!this.inited) {\n\t\t\t\tmaxDepth = this.get(\"initialDepth\", 1);\n\t\t\t}\n\t\t\tconst visibleSet = new Set(this._getVisibleNodes(dataItem, maxDepth));\n\t\t\tthis.nodes.each((node) => {\n\t\t\t\tif (!visibleSet.has(node.dataItem as DataItem<this[\"_dataItemSettings\"]>)) {\n\t\t\t\t\tnode.setPrivate(\"focusable\", false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.removePrivate(\"focusable\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis._root._invalidateTabindexes();\n\t}\n\n\tprotected _getVisibleNodes(dataItem: DataItem<this[\"_dataItemSettings\"]>, maxDepth: number, out?: Array<DataItem<this[\"_dataItemSettings\"]>>): Array<DataItem<this[\"_dataItemSettings\"]>> {\n\t\tif (!out) { out = []; }\n\t\tconst children = dataItem.get(\"children\");\n\t\tif (children) {\n\t\t\t$array.each(children, (child) => {\n\t\t\t\tif (child.get(\"depth\") == maxDepth || !child.get(\"children\")) {\n\t\t\t\t\tout!.push(child);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._getVisibleNodes(child, maxDepth, out);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn out;\n\t}\n\n}\n"]}
|
|
@@ -157,8 +157,6 @@ export declare class ClusteredPointSeries extends MapPointSeries {
|
|
|
157
157
|
zoomToCluster(dataItem: DataItem<IClusteredDataItem>, rotate?: boolean): void;
|
|
158
158
|
protected _clusterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
|
|
159
159
|
protected _onDataClear(): void;
|
|
160
|
-
protected _clusterDataItem(dataItem: DataItem<IClusteredPointSeriesDataItem>, dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
|
|
161
160
|
protected _scatterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
|
|
162
|
-
protected _scatterDataItem(dataItem: DataItem<IClusteredPointSeriesDataItem>, dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
|
|
163
161
|
}
|
|
164
162
|
//# sourceMappingURL=ClusteredPointSeries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusteredPointSeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/ClusteredPointSeries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAa,QAAQ,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAMtF,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAI5C,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC7D;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEpD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC7E;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAEvC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,4BAA6B,SAAQ,sBAAsB;CAE3E;AAED,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC7E;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IAE3H;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAGxB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IAEvD,OAAc,SAAS,EAAE,MAAM,CAA0B;IACzD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAsE;IAE9F,SAAS,EAAE,6BAA6B,CAAC;IACzC,gBAAgB,EAAE,4BAA4B,CAAC;IAC/C,iBAAiB,EAAE,6BAA6B,CAAC;IAEhE,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAyB;IACjF,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IACpC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAM;IACrE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAM;IAEpE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IACpC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAM;IAErE,WAAW,kCAAsB;IAExC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAExD,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAEjC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAK;IAElC,SAAS,CAAC,SAAS;IAOnB,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAM3B,eAAe;IA8CtB,SAAS,CAAC,aAAa;IAiDvB;;;;;;;;;;;OAWG;IACI,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO;IAI7E,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ClusteredPointSeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/ClusteredPointSeries.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,22 +133,69 @@ export class ClusteredPointSeries extends MapPointSeries {
|
|
|
133
133
|
// void
|
|
134
134
|
}
|
|
135
135
|
else {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
136
|
+
const minDistance = this.get("minDistance", 20);
|
|
137
|
+
const minDistSq = minDistance * minDistance;
|
|
138
|
+
// Pre-filter to candidates with valid points
|
|
139
|
+
const candidates = [];
|
|
140
|
+
for (let i = 0; i < dataItems.length; i++) {
|
|
141
|
+
const di = dataItems[i];
|
|
142
|
+
if (!di.get("clipped")) {
|
|
143
|
+
const pt = di.get("point");
|
|
144
|
+
if (pt) {
|
|
145
|
+
candidates.push({ di: di, x: pt.x, y: pt.y });
|
|
146
|
+
}
|
|
141
147
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
}
|
|
149
|
+
// Spatial grid: cell size = minDistance so neighbors are always in adjacent cells
|
|
150
|
+
const grid = new Map();
|
|
151
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
152
|
+
const c = candidates[i];
|
|
153
|
+
const key = Math.floor(c.x / minDistance) + "," + Math.floor(c.y / minDistance);
|
|
154
|
+
let cell = grid.get(key);
|
|
155
|
+
if (!cell) {
|
|
156
|
+
cell = [];
|
|
157
|
+
grid.set(key, cell);
|
|
158
|
+
}
|
|
159
|
+
cell.push(i);
|
|
160
|
+
}
|
|
161
|
+
const visited = new Uint8Array(candidates.length);
|
|
162
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
163
|
+
if (visited[i])
|
|
164
|
+
continue;
|
|
165
|
+
visited[i] = 1;
|
|
145
166
|
this._clusterIndex++;
|
|
146
167
|
this._clusters[this._clusterIndex] = [];
|
|
147
168
|
const cluster = this._clusters[this._clusterIndex];
|
|
148
|
-
const
|
|
149
|
-
cluster.push(
|
|
150
|
-
|
|
151
|
-
|
|
169
|
+
const seed = candidates[i];
|
|
170
|
+
cluster.push(seed.di);
|
|
171
|
+
// BFS: only check 9 neighboring cells per expansion
|
|
172
|
+
const queue = [seed];
|
|
173
|
+
let head = 0;
|
|
174
|
+
while (head < queue.length) {
|
|
175
|
+
const pt = queue[head++];
|
|
176
|
+
const cx = Math.floor(pt.x / minDistance);
|
|
177
|
+
const cy = Math.floor(pt.y / minDistance);
|
|
178
|
+
for (let dcx = -1; dcx <= 1; dcx++) {
|
|
179
|
+
for (let dcy = -1; dcy <= 1; dcy++) {
|
|
180
|
+
const cell = grid.get((cx + dcx) + "," + (cy + dcy));
|
|
181
|
+
if (cell) {
|
|
182
|
+
for (let k = 0; k < cell.length; k++) {
|
|
183
|
+
const idx = cell[k];
|
|
184
|
+
if (visited[idx])
|
|
185
|
+
continue;
|
|
186
|
+
const c = candidates[idx];
|
|
187
|
+
const dx = c.x - pt.x;
|
|
188
|
+
const dy = c.y - pt.y;
|
|
189
|
+
if (dx * dx + dy * dy < minDistSq) {
|
|
190
|
+
visited[idx] = 1;
|
|
191
|
+
cluster.push(c.di);
|
|
192
|
+
queue.push(c);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
152
199
|
}
|
|
153
200
|
}
|
|
154
201
|
let i = 0;
|
|
@@ -261,37 +308,71 @@ export class ClusteredPointSeries extends MapPointSeries {
|
|
|
261
308
|
});
|
|
262
309
|
this.clusteredDataItems = [];
|
|
263
310
|
}
|
|
264
|
-
|
|
265
|
-
const
|
|
266
|
-
if (
|
|
267
|
-
|
|
268
|
-
const
|
|
269
|
-
|
|
311
|
+
_scatterGroup(dataItems) {
|
|
312
|
+
const chart = this.chart;
|
|
313
|
+
if (chart && chart.get("zoomLevel", 1) >= chart.get("maxZoomLevel", 100) * this.get("stopClusterZoom", 0.95)) {
|
|
314
|
+
const scatterDistance = this.get("scatterDistance", 5);
|
|
315
|
+
const scatterDistSq = scatterDistance * scatterDistance;
|
|
316
|
+
// Pre-filter to candidates with valid points
|
|
317
|
+
const candidates = [];
|
|
318
|
+
for (let i = 0; i < dataItems.length; i++) {
|
|
270
319
|
const di = dataItems[i];
|
|
271
|
-
if (
|
|
272
|
-
const
|
|
273
|
-
if (
|
|
274
|
-
|
|
275
|
-
cluster.push(di);
|
|
276
|
-
$array.removeFirst(dataItems, di);
|
|
277
|
-
this._clusterDataItem(di, dataItems);
|
|
278
|
-
}
|
|
320
|
+
if (!di.get("clipped")) {
|
|
321
|
+
const pt = di.get("point");
|
|
322
|
+
if (pt) {
|
|
323
|
+
candidates.push({ di: di, x: pt.x, y: pt.y });
|
|
279
324
|
}
|
|
280
325
|
}
|
|
281
326
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
327
|
+
// Spatial grid: cell size = scatterDistance
|
|
328
|
+
const grid = new Map();
|
|
329
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
330
|
+
const c = candidates[i];
|
|
331
|
+
const key = Math.floor(c.x / scatterDistance) + "," + Math.floor(c.y / scatterDistance);
|
|
332
|
+
let cell = grid.get(key);
|
|
333
|
+
if (!cell) {
|
|
334
|
+
cell = [];
|
|
335
|
+
grid.set(key, cell);
|
|
336
|
+
}
|
|
337
|
+
cell.push(i);
|
|
338
|
+
}
|
|
339
|
+
const visited = new Uint8Array(candidates.length);
|
|
340
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
341
|
+
if (visited[i])
|
|
342
|
+
continue;
|
|
343
|
+
visited[i] = 1;
|
|
288
344
|
this._scatterIndex++;
|
|
289
345
|
this._scatters[this._scatterIndex] = [];
|
|
290
346
|
const scatter = this._scatters[this._scatterIndex];
|
|
291
|
-
const
|
|
292
|
-
scatter.push(
|
|
293
|
-
|
|
294
|
-
|
|
347
|
+
const seed = candidates[i];
|
|
348
|
+
scatter.push(seed.di);
|
|
349
|
+
const queue = [seed];
|
|
350
|
+
let head = 0;
|
|
351
|
+
while (head < queue.length) {
|
|
352
|
+
const pt = queue[head++];
|
|
353
|
+
const cx = Math.floor(pt.x / scatterDistance);
|
|
354
|
+
const cy = Math.floor(pt.y / scatterDistance);
|
|
355
|
+
for (let dcx = -1; dcx <= 1; dcx++) {
|
|
356
|
+
for (let dcy = -1; dcy <= 1; dcy++) {
|
|
357
|
+
const cell = grid.get((cx + dcx) + "," + (cy + dcy));
|
|
358
|
+
if (cell) {
|
|
359
|
+
for (let k = 0; k < cell.length; k++) {
|
|
360
|
+
const idx = cell[k];
|
|
361
|
+
if (visited[idx])
|
|
362
|
+
continue;
|
|
363
|
+
const c = candidates[idx];
|
|
364
|
+
const dx = c.x - pt.x;
|
|
365
|
+
const dy = c.y - pt.y;
|
|
366
|
+
if (dx * dx + dy * dy < scatterDistSq) {
|
|
367
|
+
visited[idx] = 1;
|
|
368
|
+
scatter.push(c.di);
|
|
369
|
+
queue.push(c);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
295
376
|
}
|
|
296
377
|
$array.each(this._scatters, (scatter) => {
|
|
297
378
|
let len = scatter.length;
|
|
@@ -338,25 +419,6 @@ export class ClusteredPointSeries extends MapPointSeries {
|
|
|
338
419
|
});
|
|
339
420
|
}
|
|
340
421
|
}
|
|
341
|
-
_scatterDataItem(dataItem, dataItems) {
|
|
342
|
-
const point = dataItem.get("point");
|
|
343
|
-
if (point) {
|
|
344
|
-
const scatterDistance = this.get("scatterDistance", 5);
|
|
345
|
-
const scatter = this._scatters[this._scatterIndex];
|
|
346
|
-
$array.each(dataItems, (di) => {
|
|
347
|
-
if (di && !di.get("clipped")) {
|
|
348
|
-
const diPoint = di.get("point");
|
|
349
|
-
if (diPoint) {
|
|
350
|
-
if (Math.hypot(diPoint.x - point.x, diPoint.y - point.y) < scatterDistance) {
|
|
351
|
-
scatter.push(di);
|
|
352
|
-
$array.removeFirst(dataItems, di);
|
|
353
|
-
this._scatterDataItem(di, dataItems);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
422
|
}
|
|
361
423
|
ClusteredPointSeries.className = "ClusteredPointSeries";
|
|
362
424
|
ClusteredPointSeries.classNames = MapPointSeries.classNames.concat([ClusteredPointSeries.className]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusteredPointSeries.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/ClusteredPointSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Root } from \"../../core/Root\";\r\nimport type { Bullet } from \"../../core/render/Bullet\";\r\nimport type { IDisposer } from \"../../core/util/Disposer\";\r\n\r\nimport { MapPointSeries, IMapPointSeriesSettings, IMapPointSeriesPrivate, IMapPointSeriesDataItem } from \"./MapPointSeries\";\r\nimport { Component, DataItem, IComponentDataItem } from \"../../core/render/Component\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\n\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as d3hierarchy from \"d3-hierarchy\";\r\nimport * as $math from \"../../core/util/Math\";\r\n\r\n\r\nexport interface IClusteredDataItem extends IComponentDataItem {\r\n\t/**\r\n\t * All the data items of this cluster\r\n\t */\r\n\tchildren?: Array<DataItem<IMapPointSeriesDataItem>>;\r\n\r\n\t/**\r\n\t * Bullet of clustered data item\r\n\t */\r\n\tbullet?: Bullet;\r\n\r\n\t/**\r\n\t * An ID of a group.\r\n\t */\r\n\tgroupId?: string\r\n\r\n\t/**\r\n\t * Longitude.\r\n\t */\r\n\tlongitude?: number;\r\n\r\n\t/**\r\n\t * Latitude.\r\n\t */\r\n\tlatitude?: number;\r\n}\r\n\r\nexport interface IClusteredPointSeriesDataItem extends IMapPointSeriesDataItem {\r\n\t/**\r\n\t * An ID of a bullet's group.\r\n\t */\r\n\tgroupId?: string\r\n\r\n\t/**\r\n\t * Clustered data item (if available)\r\n\t * @readonly\r\n\t */\r\n\tcluster?: DataItem<IClusteredDataItem>;\r\n\r\n\t/**\r\n\t * How much bullet was moved from its original position\r\n\t */\r\n\tdx?: number;\r\n\r\n\t/**\r\n\t * How much bullet was moved from its original position\r\n\t */\r\n\tdy?: number;\r\n}\r\n\r\nexport interface IClusteredPointSeriesPrivate extends IMapPointSeriesPrivate {\r\n\r\n}\r\n\r\nexport interface IClusteredPointSeriesSettings extends IMapPointSeriesSettings {\r\n\t/**\r\n\t * Series data can contain a field with an ID of a virtual group the bullet\r\n\t * belongs to.\r\n\t *\r\n\t * For example, we migth want bullets to group with other bullets from the\r\n\t * same continent.\r\n\t *\r\n\t * `groupIdField` specifies which field in source data holds group IDs.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Group_segregation} for more info\r\n\t * @default groupID\r\n\t */\r\n\tgroupIdField?: string;\r\n\r\n\t/**\r\n\t * Bullets that are closer than X pixels apart, will be automatically grouped.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Minimal_distance} for more info\r\n\t * @default 20\r\n\t */\r\n\tminDistance?: number;\r\n\r\n\t/**\r\n\t * Set this to a [[Bullet]] instance which will be used to show groups.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Group_bullet} for more info\r\n\t */\r\n\tclusteredBullet?: (root: Root, series: ClusteredPointSeries, dataItem: DataItem<IClusteredDataItem>) => Bullet | undefined;\r\n\r\n\t/**\r\n\t * If bullets are closer to each other than `scatterDistance`, they will be\r\n\t * scattered so that all are visible.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Scatter_settings} for more info\r\n\t * @default 5\r\n\t * @since 5.5.7\r\n\t */\r\n\tscatterDistance?: number;\r\n\r\n\t/**\r\n\t * Presumed radius of a each bullet when scattering them.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Scatter_settings} for more info\r\n\t * @default 8\r\n\t * @since 5.5.7\r\n\t */\r\n\tscatterRadius?: number;\r\n\r\n\t/**\r\n\t * If a map is zoomed to a maxZoomLevel * stopClusterZoom, clusters will be\r\n\t * disabled.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Scatter_settings} for more info\r\n\t * @default 0.95\r\n\t * @since 5.5.7\r\n\t */\r\n\tstopClusterZoom?: number\r\n\r\n\r\n\t/**\r\n\t * Delay in milliseconds before clustering is made.\r\n\t *\r\n\t * This is useful if you have many data items and want to avoid re-clustering\r\n\t * on every zoom/position change.\r\n\t *\r\n\t * @default 0\r\n\t * @since 5.9.11\r\n\t */\r\n\tclusterDelay?: number;\r\n}\r\n\r\n/**\r\n * A version of [[MapPointSeries]] which can automatically group closely located\r\n * bullets into groups.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/} for more info\r\n * @since 5.5.6\r\n * @important\r\n */\r\nexport class ClusteredPointSeries extends MapPointSeries {\r\n\r\n\tpublic static className: string = \"ClusteredPointSeries\";\r\n\tpublic static classNames: Array<string> = MapPointSeries.classNames.concat([ClusteredPointSeries.className]);\r\n\r\n\tdeclare public _settings: IClusteredPointSeriesSettings;\r\n\tdeclare public _privateSettings: IClusteredPointSeriesPrivate;\r\n\tdeclare public _dataItemSettings: IClusteredPointSeriesDataItem;\r\n\r\n\tprotected _dataItem: DataItem<this[\"_dataItemSettings\"]> = this.makeDataItem({});\r\n\tprotected _clusterIndex: number = 0;\r\n\tprotected _clusters: Array<Array<DataItem<this[\"_dataItemSettings\"]>>> = [];\r\n\tpublic clusteredDataItems: Array<DataItem<IClusteredDataItem>> = [];\r\n\r\n\tprotected _scatterIndex: number = 0;\r\n\tprotected _scatters: Array<Array<DataItem<this[\"_dataItemSettings\"]>>> = [];\r\n\r\n\tpublic _packLayout = d3hierarchy.pack();\r\n\r\n\tprotected _spiral: Array<{ x: number, y: number }> = [];\r\n\r\n\tprotected _clusterDP?: IDisposer;\r\n\r\n\tprotected _previousZL: number = 0;\r\n\r\n\tprotected _afterNew() {\r\n\t\tthis.fields.push(\"groupId\");\r\n\t\tthis._setRawDefault(\"groupIdField\", \"groupId\");\r\n\r\n\t\tsuper._afterNew();\r\n\t}\r\n\r\n\tprotected _afterDataChange(): void {\r\n\t\tsuper._afterDataChange();\r\n\r\n\t\tthis._previousZL = 0;\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"scatterRadius\")) {\r\n\t\t\tthis._spiral = $math.spiralPoints(0, 0, 300, 300, 0, 3, 3, 0, 0)\r\n\t\t}\r\n\r\n\t\tconst chart = this.chart;\r\n\r\n\t\tif (chart) {\r\n\r\n\t\t\tconst zoomLevel = chart.get(\"zoomLevel\", 1);\r\n\r\n\t\t\tif (zoomLevel != this._previousZL) {\r\n\t\t\t\tconst clusterDelay = this.get(\"clusterDelay\", 0);\r\n\t\t\t\tif (clusterDelay) {\r\n\t\t\t\t\tif (this._clusterDP) {\r\n\t\t\t\t\t\tthis._clusterDP.dispose();\r\n\r\n\t\t\t\t\t\tthis._clusterDP = this.setTimeout(() => {\r\n\t\t\t\t\t\t\tthis._doTheCluster();\r\n\t\t\t\t\t\t}, clusterDelay)\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// first time without delay\r\n\t\t\t\t\t\tthis._doTheCluster();\r\n\t\t\t\t\t\tthis._clusterDP = this.setTimeout(() => { }, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._doTheCluster();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._previousZL = zoomLevel;\r\n\t\t\t}\r\n\r\n\t\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\t\tconst bullet = dataItem.get(\"bullet\" as any);\r\n\t\t\t\tconst longitude = dataItem.get(\"longitude\", 0);\r\n\t\t\t\tconst latitude = dataItem.get(\"latitude\", 0);\r\n\t\t\t\tthis._positionBulletReal(bullet, { type: \"Point\", coordinates: [longitude, latitude] }, [longitude, latitude]);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected _doTheCluster() {\r\n\t\tconst groups: { [index: string]: Array<DataItem<IClusteredPointSeriesDataItem>> } = {};\r\n\t\t// distribute to groups\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tconst groupId = dataItem.get(\"groupId\", \"_default\");\r\n\r\n\t\t\tif (!groups[groupId]) {\r\n\t\t\t\tgroups[groupId] = [];\r\n\t\t\t}\r\n\t\t\tgroups[groupId].push(dataItem);\r\n\t\t})\r\n\r\n\t\tthis._scatterIndex = -1;\r\n\t\tthis._scatters = [];\r\n\t\tthis._clusterIndex = -1;\r\n\t\tthis._clusters = [];\r\n\r\n\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\tdataItem.setRaw(\"children\", undefined);\r\n\t\t})\r\n\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tdataItem.setRaw(\"cluster\", undefined);\r\n\t\t})\r\n\r\n\t\t$object.each(groups, (_key, group) => {\r\n\t\t\tthis._scatterGroup(group);\r\n\t\t})\r\n\r\n\r\n\t\t$object.each(groups, (_key, group) => {\r\n\t\t\tthis._clusterGroup(group);\r\n\t\t})\r\n\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tif (!dataItem.get(\"cluster\")) {\r\n\t\t\t\tconst bullets = dataItem.bullets;\r\n\t\t\t\tif (bullets) {\r\n\t\t\t\t\t$array.each(bullets, (bullet) => {\r\n\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\tsprite.set(\"forceHidden\", false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms to the area so that all clustered data items of a cluster would be\r\n\t * visible.\r\n\t *\r\n\t * Pass in `true` as a second parameter to rotate that map so that the group\r\n\t * is in the center. This is especially useful in the maps that use\r\n\t * Orthographic (globe) projection.\r\n\t *\r\n\t * @param dataItem Group data item\r\n\t * @param rotate Rotate the map so that group is in the center?\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Drill_down} for more info\r\n\t */\r\n\tpublic zoomToCluster(dataItem: DataItem<IClusteredDataItem>, rotate?: boolean) {\r\n\t\tthis.zoomToDataItems(dataItem.get(\"children\", []), rotate);\r\n\t}\r\n\r\n\tprotected _clusterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>) {\r\n\t\tconst chart = this.chart;\r\n\t\tif (chart && chart.get(\"zoomLevel\", 1) >= chart.get(\"maxZoomLevel\", 100) * this.get(\"stopClusterZoom\", 0.95)) {\r\n\t\t\t// void\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\tdataItems.sort((a, b) => {\r\n\t\t\t\tconst pointA = a.get(\"point\");\r\n\t\t\t\tconst pointB = b.get(\"point\");\r\n\t\t\t\tif (pointA && pointB) {\r\n\t\t\t\t\treturn Math.hypot(pointA.x - pointB.x, pointA.y - pointB.y);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn 0;\r\n\t\t\t})\r\n\r\n\t\t\twhile (dataItems.length > 0) {\r\n\t\t\t\tthis._clusterIndex++;\r\n\t\t\t\tthis._clusters[this._clusterIndex] = [];\r\n\t\t\t\tconst cluster = this._clusters[this._clusterIndex];\r\n\t\t\t\tconst dataItem = dataItems[0];\r\n\r\n\t\t\t\tcluster.push(dataItem);\r\n\t\t\t\t$array.removeFirst(dataItems, dataItem);\r\n\r\n\t\t\t\tthis._clusterDataItem(dataItem, dataItems);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet i = 0;\r\n\r\n\t\tconst bulletMethod = this.get(\"clusteredBullet\");\r\n\t\tif (bulletMethod) {\r\n\t\t\t$array.each(this._clusters, (cluster) => {\r\n\t\t\t\tlet sumX = 0;\r\n\t\t\t\tlet sumY = 0;\r\n\r\n\t\t\t\tlet len = cluster.length;\r\n\r\n\t\t\t\tif (len > 1) {\r\n\r\n\t\t\t\t\tlet clusteredDataItem = this.clusteredDataItems[i];\r\n\t\t\t\t\tif (!clusteredDataItem) {\r\n\t\t\t\t\t\tclusteredDataItem = new DataItem(this, undefined, {});\r\n\r\n\t\t\t\t\t\tconst bullet = clusteredDataItem.set(\"bullet\" as any, bulletMethod(this._root, this, clusteredDataItem));\r\n\r\n\t\t\t\t\t\tif (bullet) {\r\n\t\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\t\tthis.bulletsContainer.children.push(sprite);\r\n\t\t\t\t\t\t\t\tsprite._setDataItem(clusteredDataItem);\r\n\r\n\t\t\t\t\t\t\t\tthis.root.events.once(\"frameended\", () => {\r\n\t\t\t\t\t\t\t\t\tif (sprite instanceof Container) {\r\n\t\t\t\t\t\t\t\t\t\tsprite.walkChildren((child) => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (child instanceof Component) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tchild.markDirtyValues();\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.clusteredDataItems.push(clusteredDataItem)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet groupId;\r\n\r\n\t\t\t\t\t$array.each(cluster, (dataItem) => {\r\n\t\t\t\t\t\tdataItem.setRaw(\"cluster\", clusteredDataItem);\r\n\r\n\t\t\t\t\t\tconst point = dataItem.get(\"point\");\r\n\t\t\t\t\t\tif (point) {\r\n\t\t\t\t\t\t\tsumX += point.x;\r\n\t\t\t\t\t\t\tsumY += point.y;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst bullets = dataItem.bullets;\r\n\t\t\t\t\t\tif (bullets) {\r\n\t\t\t\t\t\t\t$array.each(bullets, (bullet) => {\r\n\t\t\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\t\t\tsprite.set(\"forceHidden\", true);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgroupId = dataItem.get(\"groupId\");\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tlet averageX = sumX / len;\r\n\t\t\t\t\tlet averageY = sumY / len;\r\n\r\n\t\t\t\t\tclusteredDataItem.setRaw(\"children\" as any, cluster);\r\n\t\t\t\t\tclusteredDataItem.setRaw(\"groupId\", groupId);\r\n\r\n\t\t\t\t\tconst prevLen = clusteredDataItem.get(\"value\" as any);\r\n\t\t\t\t\tclusteredDataItem.setRaw(\"value\" as any, len);\r\n\r\n\t\t\t\t\tconst bullet = clusteredDataItem.get(\"bullet\" as any);\r\n\t\t\t\t\tif (bullet) {\r\n\r\n\t\t\t\t\t\tlet geoPoint = this.chart!.invert({ x: averageX, y: averageY });\r\n\t\t\t\t\t\tif (geoPoint) {\r\n\t\t\t\t\t\t\tclusteredDataItem.setAll({\r\n\t\t\t\t\t\t\t\tlongitude: geoPoint.longitude,\r\n\t\t\t\t\t\t\t\tlatitude: geoPoint.latitude,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis._positionBullets(clusteredDataItem)\r\n\r\n\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\tsprite.set(\"forceHidden\", false);\r\n\t\t\t\t\t\t\t//sprite.setAll({ x: averageX, y: averageY });\r\n\r\n\t\t\t\t\t\t\tif (prevLen != len) {\r\n\t\t\t\t\t\t\t\tif (sprite instanceof Container) {\r\n\t\t\t\t\t\t\t\t\tsprite.walkChildren((child) => {\r\n\t\t\t\t\t\t\t\t\t\tif (child instanceof Label) {\r\n\t\t\t\t\t\t\t\t\t\t\tchild.text.markDirtyText();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\tlet children = dataItem.get(\"children\");\r\n\t\t\tif (!children || children.length == 0) {\r\n\t\t\t\tconst bullet = dataItem.get(\"bullet\" as any);\r\n\t\t\t\tif (bullet) {\r\n\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\tsprite.set(\"forceHidden\", true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprotected _onDataClear() {\r\n\t\tsuper._onDataClear();\r\n\r\n\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\tconst bullet = dataItem.get(\"bullet\" as any);\r\n\t\t\tif (bullet) {\r\n\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\tif (sprite) {\r\n\t\t\t\t\tsprite.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.clusteredDataItems = [];\r\n\r\n\t}\r\n\r\n\tprotected _clusterDataItem(dataItem: DataItem<IClusteredPointSeriesDataItem>, dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>) {\r\n\t\tconst point = dataItem.get(\"point\");\r\n\t\tif (point) {\r\n\t\t\tlet minDistance = this.get(\"minDistance\", 20);\r\n\t\t\tconst cluster = this._clusters[this._clusterIndex];\r\n\r\n\t\t\tfor (let i = dataItems.length - 1; i >= 0; i--) {\r\n\t\t\t\tconst di = dataItems[i];\r\n\t\t\t\tif (di && !di.get(\"clipped\")) {\r\n\t\t\t\t\tconst diPoint = di.get(\"point\");\r\n\t\t\t\t\tif (diPoint) {\r\n\t\t\t\t\t\tif (Math.hypot(diPoint.x - point.x, diPoint.y - point.y) < minDistance) {\r\n\t\t\t\t\t\t\tcluster.push(di);\r\n\t\t\t\t\t\t\t$array.removeFirst(dataItems, di);\r\n\t\t\t\t\t\t\tthis._clusterDataItem(di, dataItems);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _scatterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>) {\r\n\t\tconst chart = this.chart;\r\n\t\tif (chart && chart.get(\"zoomLevel\", 1) >= chart.get(\"maxZoomLevel\", 100) * this.get(\"stopClusterZoom\", 0.95)) {\r\n\t\t\twhile (dataItems.length > 0) {\r\n\t\t\t\tthis._scatterIndex++;\r\n\t\t\t\tthis._scatters[this._scatterIndex] = [];\r\n\t\t\t\tconst scatter = this._scatters[this._scatterIndex];\r\n\t\t\t\tconst dataItem = dataItems[0];\r\n\r\n\t\t\t\tscatter.push(dataItem);\r\n\t\t\t\t$array.remove(dataItems, dataItem);\r\n\r\n\t\t\t\tthis._scatterDataItem(dataItem, dataItems);\r\n\t\t\t}\r\n\r\n\t\t\t$array.each(this._scatters, (scatter) => {\r\n\t\t\t\tlet len = scatter.length;\r\n\r\n\t\t\t\tif (len > 1) {\r\n\t\t\t\t\tlet previousCircles: Array<{ x: number, y: number, radius: number }> = [];\r\n\t\t\t\t\tlet s = 0;\r\n\t\t\t\t\tlet radius = this.get(\"scatterRadius\", 8);\r\n\t\t\t\t\t$array.each(scatter, (dataItem) => {\r\n\t\t\t\t\t\tlet spiralPoint = this._spiral[s];\r\n\t\t\t\t\t\tlet intersects = true;\r\n\r\n\t\t\t\t\t\tif (previousCircles.length > 0) {\r\n\t\t\t\t\t\t\twhile (intersects) {\r\n\t\t\t\t\t\t\t\t$array.each(previousCircles, (previousCircle) => {\r\n\t\t\t\t\t\t\t\t\tintersects = false;\r\n\t\t\t\t\t\t\t\t\twhile ($math.circlesOverlap({ x: spiralPoint.x, y: spiralPoint.y, radius: radius }, previousCircle)) {\r\n\t\t\t\t\t\t\t\t\t\ts++;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (this._spiral[s] == undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tintersects = false;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\tintersects = true;\r\n\t\t\t\t\t\t\t\t\t\t\tspiralPoint = this._spiral[s];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst dx = spiralPoint.x;\r\n\t\t\t\t\t\tconst dy = spiralPoint.y;\r\n\r\n\t\t\t\t\t\tpreviousCircles.push({ x: dx, y: dy, radius: radius });\r\n\r\n\t\t\t\t\t\tdataItem.set(\"dx\", dx);\r\n\t\t\t\t\t\tdataItem.set(\"dy\", dy);\r\n\r\n\t\t\t\t\t\tconst bullets = dataItem.bullets;\r\n\t\t\t\t\t\tif (bullets) {\r\n\t\t\t\t\t\t\t$array.each(bullets, (bullet) => {\r\n\t\t\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\t\t\tsprite.setAll({ dx: dx, dy: dy });\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _scatterDataItem(dataItem: DataItem<IClusteredPointSeriesDataItem>, dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>) {\r\n\t\tconst point = dataItem.get(\"point\");\r\n\t\tif (point) {\r\n\t\t\tconst scatterDistance = this.get(\"scatterDistance\", 5)\r\n\t\t\tconst scatter = this._scatters[this._scatterIndex];\r\n\t\t\t$array.each(dataItems, (di) => {\r\n\t\t\t\tif (di && !di.get(\"clipped\")) {\r\n\t\t\t\t\tconst diPoint = di.get(\"point\");\r\n\r\n\t\t\t\t\tif (diPoint) {\r\n\t\t\t\t\t\tif (Math.hypot(diPoint.x - point.x, diPoint.y - point.y) < scatterDistance) {\r\n\t\t\t\t\t\t\tscatter.push(di);\r\n\t\t\t\t\t\t\t$array.removeFirst(dataItems, di);\r\n\t\t\t\t\t\t\tthis._scatterDataItem(di, dataItems);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ClusteredPointSeries.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/ClusteredPointSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Root } from \"../../core/Root\";\r\nimport type { Bullet } from \"../../core/render/Bullet\";\r\nimport type { IDisposer } from \"../../core/util/Disposer\";\r\n\r\nimport { MapPointSeries, IMapPointSeriesSettings, IMapPointSeriesPrivate, IMapPointSeriesDataItem } from \"./MapPointSeries\";\r\nimport { Component, DataItem, IComponentDataItem } from \"../../core/render/Component\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\n\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as d3hierarchy from \"d3-hierarchy\";\r\nimport * as $math from \"../../core/util/Math\";\r\n\r\n\r\nexport interface IClusteredDataItem extends IComponentDataItem {\r\n\t/**\r\n\t * All the data items of this cluster\r\n\t */\r\n\tchildren?: Array<DataItem<IMapPointSeriesDataItem>>;\r\n\r\n\t/**\r\n\t * Bullet of clustered data item\r\n\t */\r\n\tbullet?: Bullet;\r\n\r\n\t/**\r\n\t * An ID of a group.\r\n\t */\r\n\tgroupId?: string\r\n\r\n\t/**\r\n\t * Longitude.\r\n\t */\r\n\tlongitude?: number;\r\n\r\n\t/**\r\n\t * Latitude.\r\n\t */\r\n\tlatitude?: number;\r\n}\r\n\r\nexport interface IClusteredPointSeriesDataItem extends IMapPointSeriesDataItem {\r\n\t/**\r\n\t * An ID of a bullet's group.\r\n\t */\r\n\tgroupId?: string\r\n\r\n\t/**\r\n\t * Clustered data item (if available)\r\n\t * @readonly\r\n\t */\r\n\tcluster?: DataItem<IClusteredDataItem>;\r\n\r\n\t/**\r\n\t * How much bullet was moved from its original position\r\n\t */\r\n\tdx?: number;\r\n\r\n\t/**\r\n\t * How much bullet was moved from its original position\r\n\t */\r\n\tdy?: number;\r\n}\r\n\r\nexport interface IClusteredPointSeriesPrivate extends IMapPointSeriesPrivate {\r\n\r\n}\r\n\r\nexport interface IClusteredPointSeriesSettings extends IMapPointSeriesSettings {\r\n\t/**\r\n\t * Series data can contain a field with an ID of a virtual group the bullet\r\n\t * belongs to.\r\n\t *\r\n\t * For example, we migth want bullets to group with other bullets from the\r\n\t * same continent.\r\n\t *\r\n\t * `groupIdField` specifies which field in source data holds group IDs.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Group_segregation} for more info\r\n\t * @default groupID\r\n\t */\r\n\tgroupIdField?: string;\r\n\r\n\t/**\r\n\t * Bullets that are closer than X pixels apart, will be automatically grouped.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Minimal_distance} for more info\r\n\t * @default 20\r\n\t */\r\n\tminDistance?: number;\r\n\r\n\t/**\r\n\t * Set this to a [[Bullet]] instance which will be used to show groups.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Group_bullet} for more info\r\n\t */\r\n\tclusteredBullet?: (root: Root, series: ClusteredPointSeries, dataItem: DataItem<IClusteredDataItem>) => Bullet | undefined;\r\n\r\n\t/**\r\n\t * If bullets are closer to each other than `scatterDistance`, they will be\r\n\t * scattered so that all are visible.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Scatter_settings} for more info\r\n\t * @default 5\r\n\t * @since 5.5.7\r\n\t */\r\n\tscatterDistance?: number;\r\n\r\n\t/**\r\n\t * Presumed radius of a each bullet when scattering them.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Scatter_settings} for more info\r\n\t * @default 8\r\n\t * @since 5.5.7\r\n\t */\r\n\tscatterRadius?: number;\r\n\r\n\t/**\r\n\t * If a map is zoomed to a maxZoomLevel * stopClusterZoom, clusters will be\r\n\t * disabled.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Scatter_settings} for more info\r\n\t * @default 0.95\r\n\t * @since 5.5.7\r\n\t */\r\n\tstopClusterZoom?: number\r\n\r\n\r\n\t/**\r\n\t * Delay in milliseconds before clustering is made.\r\n\t *\r\n\t * This is useful if you have many data items and want to avoid re-clustering\r\n\t * on every zoom/position change.\r\n\t *\r\n\t * @default 0\r\n\t * @since 5.9.11\r\n\t */\r\n\tclusterDelay?: number;\r\n}\r\n\r\n/**\r\n * A version of [[MapPointSeries]] which can automatically group closely located\r\n * bullets into groups.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/} for more info\r\n * @since 5.5.6\r\n * @important\r\n */\r\nexport class ClusteredPointSeries extends MapPointSeries {\r\n\r\n\tpublic static className: string = \"ClusteredPointSeries\";\r\n\tpublic static classNames: Array<string> = MapPointSeries.classNames.concat([ClusteredPointSeries.className]);\r\n\r\n\tdeclare public _settings: IClusteredPointSeriesSettings;\r\n\tdeclare public _privateSettings: IClusteredPointSeriesPrivate;\r\n\tdeclare public _dataItemSettings: IClusteredPointSeriesDataItem;\r\n\r\n\tprotected _dataItem: DataItem<this[\"_dataItemSettings\"]> = this.makeDataItem({});\r\n\tprotected _clusterIndex: number = 0;\r\n\tprotected _clusters: Array<Array<DataItem<this[\"_dataItemSettings\"]>>> = [];\r\n\tpublic clusteredDataItems: Array<DataItem<IClusteredDataItem>> = [];\r\n\r\n\tprotected _scatterIndex: number = 0;\r\n\tprotected _scatters: Array<Array<DataItem<this[\"_dataItemSettings\"]>>> = [];\r\n\r\n\tpublic _packLayout = d3hierarchy.pack();\r\n\r\n\tprotected _spiral: Array<{ x: number, y: number }> = [];\r\n\r\n\tprotected _clusterDP?: IDisposer;\r\n\r\n\tprotected _previousZL: number = 0;\r\n\r\n\tprotected _afterNew() {\r\n\t\tthis.fields.push(\"groupId\");\r\n\t\tthis._setRawDefault(\"groupIdField\", \"groupId\");\r\n\r\n\t\tsuper._afterNew();\r\n\t}\r\n\r\n\tprotected _afterDataChange(): void {\r\n\t\tsuper._afterDataChange();\r\n\r\n\t\tthis._previousZL = 0;\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"scatterRadius\")) {\r\n\t\t\tthis._spiral = $math.spiralPoints(0, 0, 300, 300, 0, 3, 3, 0, 0)\r\n\t\t}\r\n\r\n\t\tconst chart = this.chart;\r\n\r\n\t\tif (chart) {\r\n\r\n\t\t\tconst zoomLevel = chart.get(\"zoomLevel\", 1);\r\n\r\n\t\t\tif (zoomLevel != this._previousZL) {\r\n\t\t\t\tconst clusterDelay = this.get(\"clusterDelay\", 0);\r\n\t\t\t\tif (clusterDelay) {\r\n\t\t\t\t\tif (this._clusterDP) {\r\n\t\t\t\t\t\tthis._clusterDP.dispose();\r\n\r\n\t\t\t\t\t\tthis._clusterDP = this.setTimeout(() => {\r\n\t\t\t\t\t\t\tthis._doTheCluster();\r\n\t\t\t\t\t\t}, clusterDelay)\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// first time without delay\r\n\t\t\t\t\t\tthis._doTheCluster();\r\n\t\t\t\t\t\tthis._clusterDP = this.setTimeout(() => { }, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._doTheCluster();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._previousZL = zoomLevel;\r\n\t\t\t}\r\n\r\n\t\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\t\tconst bullet = dataItem.get(\"bullet\" as any);\r\n\t\t\t\tconst longitude = dataItem.get(\"longitude\", 0);\r\n\t\t\t\tconst latitude = dataItem.get(\"latitude\", 0);\r\n\t\t\t\tthis._positionBulletReal(bullet, { type: \"Point\", coordinates: [longitude, latitude] }, [longitude, latitude]);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected _doTheCluster() {\r\n\t\tconst groups: { [index: string]: Array<DataItem<IClusteredPointSeriesDataItem>> } = {};\r\n\t\t// distribute to groups\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tconst groupId = dataItem.get(\"groupId\", \"_default\");\r\n\r\n\t\t\tif (!groups[groupId]) {\r\n\t\t\t\tgroups[groupId] = [];\r\n\t\t\t}\r\n\t\t\tgroups[groupId].push(dataItem);\r\n\t\t})\r\n\r\n\t\tthis._scatterIndex = -1;\r\n\t\tthis._scatters = [];\r\n\t\tthis._clusterIndex = -1;\r\n\t\tthis._clusters = [];\r\n\r\n\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\tdataItem.setRaw(\"children\", undefined);\r\n\t\t})\r\n\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tdataItem.setRaw(\"cluster\", undefined);\r\n\t\t})\r\n\r\n\t\t$object.each(groups, (_key, group) => {\r\n\t\t\tthis._scatterGroup(group);\r\n\t\t})\r\n\r\n\r\n\t\t$object.each(groups, (_key, group) => {\r\n\t\t\tthis._clusterGroup(group);\r\n\t\t})\r\n\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tif (!dataItem.get(\"cluster\")) {\r\n\t\t\t\tconst bullets = dataItem.bullets;\r\n\t\t\t\tif (bullets) {\r\n\t\t\t\t\t$array.each(bullets, (bullet) => {\r\n\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\tsprite.set(\"forceHidden\", false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms to the area so that all clustered data items of a cluster would be\r\n\t * visible.\r\n\t *\r\n\t * Pass in `true` as a second parameter to rotate that map so that the group\r\n\t * is in the center. This is especially useful in the maps that use\r\n\t * Orthographic (globe) projection.\r\n\t *\r\n\t * @param dataItem Group data item\r\n\t * @param rotate Rotate the map so that group is in the center?\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Drill_down} for more info\r\n\t */\r\n\tpublic zoomToCluster(dataItem: DataItem<IClusteredDataItem>, rotate?: boolean) {\r\n\t\tthis.zoomToDataItems(dataItem.get(\"children\", []), rotate);\r\n\t}\r\n\r\n\tprotected _clusterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>) {\r\n\t\tconst chart = this.chart;\r\n\t\tif (chart && chart.get(\"zoomLevel\", 1) >= chart.get(\"maxZoomLevel\", 100) * this.get(\"stopClusterZoom\", 0.95)) {\r\n\t\t\t// void\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst minDistance = this.get(\"minDistance\", 20);\r\n\t\t\tconst minDistSq = minDistance * minDistance;\r\n\r\n\t\t\t// Pre-filter to candidates with valid points\r\n\t\t\tconst candidates: Array<{ di: DataItem<IClusteredPointSeriesDataItem>, x: number, y: number }> = [];\r\n\t\t\tfor (let i = 0; i < dataItems.length; i++) {\r\n\t\t\t\tconst di = dataItems[i];\r\n\t\t\t\tif (!di.get(\"clipped\")) {\r\n\t\t\t\t\tconst pt = di.get(\"point\");\r\n\t\t\t\t\tif (pt) {\r\n\t\t\t\t\t\tcandidates.push({ di: di, x: pt.x, y: pt.y });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Spatial grid: cell size = minDistance so neighbors are always in adjacent cells\r\n\t\t\tconst grid = new Map<string, number[]>();\r\n\t\t\tfor (let i = 0; i < candidates.length; i++) {\r\n\t\t\t\tconst c = candidates[i];\r\n\t\t\t\tconst key = Math.floor(c.x / minDistance) + \",\" + Math.floor(c.y / minDistance);\r\n\t\t\t\tlet cell = grid.get(key);\r\n\t\t\t\tif (!cell) {\r\n\t\t\t\t\tcell = [];\r\n\t\t\t\t\tgrid.set(key, cell);\r\n\t\t\t\t}\r\n\t\t\t\tcell.push(i);\r\n\t\t\t}\r\n\r\n\t\t\tconst visited = new Uint8Array(candidates.length);\r\n\r\n\t\t\tfor (let i = 0; i < candidates.length; i++) {\r\n\t\t\t\tif (visited[i]) continue;\r\n\t\t\t\tvisited[i] = 1;\r\n\r\n\t\t\t\tthis._clusterIndex++;\r\n\t\t\t\tthis._clusters[this._clusterIndex] = [];\r\n\t\t\t\tconst cluster = this._clusters[this._clusterIndex];\r\n\r\n\t\t\t\tconst seed = candidates[i];\r\n\t\t\t\tcluster.push(seed.di);\r\n\r\n\t\t\t\t// BFS: only check 9 neighboring cells per expansion\r\n\t\t\t\tconst queue = [seed];\r\n\t\t\t\tlet head = 0;\r\n\r\n\t\t\t\twhile (head < queue.length) {\r\n\t\t\t\t\tconst pt = queue[head++];\r\n\t\t\t\t\tconst cx = Math.floor(pt.x / minDistance);\r\n\t\t\t\t\tconst cy = Math.floor(pt.y / minDistance);\r\n\r\n\t\t\t\t\tfor (let dcx = -1; dcx <= 1; dcx++) {\r\n\t\t\t\t\t\tfor (let dcy = -1; dcy <= 1; dcy++) {\r\n\t\t\t\t\t\t\tconst cell = grid.get((cx + dcx) + \",\" + (cy + dcy));\r\n\t\t\t\t\t\t\tif (cell) {\r\n\t\t\t\t\t\t\t\tfor (let k = 0; k < cell.length; k++) {\r\n\t\t\t\t\t\t\t\t\tconst idx = cell[k];\r\n\t\t\t\t\t\t\t\t\tif (visited[idx]) continue;\r\n\t\t\t\t\t\t\t\t\tconst c = candidates[idx];\r\n\t\t\t\t\t\t\t\t\tconst dx = c.x - pt.x;\r\n\t\t\t\t\t\t\t\t\tconst dy = c.y - pt.y;\r\n\t\t\t\t\t\t\t\t\tif (dx * dx + dy * dy < minDistSq) {\r\n\t\t\t\t\t\t\t\t\t\tvisited[idx] = 1;\r\n\t\t\t\t\t\t\t\t\t\tcluster.push(c.di);\r\n\t\t\t\t\t\t\t\t\t\tqueue.push(c);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet i = 0;\r\n\r\n\t\tconst bulletMethod = this.get(\"clusteredBullet\");\r\n\t\tif (bulletMethod) {\r\n\t\t\t$array.each(this._clusters, (cluster) => {\r\n\t\t\t\tlet sumX = 0;\r\n\t\t\t\tlet sumY = 0;\r\n\r\n\t\t\t\tlet len = cluster.length;\r\n\r\n\t\t\t\tif (len > 1) {\r\n\r\n\t\t\t\t\tlet clusteredDataItem = this.clusteredDataItems[i];\r\n\t\t\t\t\tif (!clusteredDataItem) {\r\n\t\t\t\t\t\tclusteredDataItem = new DataItem(this, undefined, {});\r\n\r\n\t\t\t\t\t\tconst bullet = clusteredDataItem.set(\"bullet\" as any, bulletMethod(this._root, this, clusteredDataItem));\r\n\r\n\t\t\t\t\t\tif (bullet) {\r\n\t\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\t\tthis.bulletsContainer.children.push(sprite);\r\n\t\t\t\t\t\t\t\tsprite._setDataItem(clusteredDataItem);\r\n\r\n\t\t\t\t\t\t\t\tthis.root.events.once(\"frameended\", () => {\r\n\t\t\t\t\t\t\t\t\tif (sprite instanceof Container) {\r\n\t\t\t\t\t\t\t\t\t\tsprite.walkChildren((child) => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (child instanceof Component) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tchild.markDirtyValues();\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.clusteredDataItems.push(clusteredDataItem)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet groupId;\r\n\r\n\t\t\t\t\t$array.each(cluster, (dataItem) => {\r\n\t\t\t\t\t\tdataItem.setRaw(\"cluster\", clusteredDataItem);\r\n\r\n\t\t\t\t\t\tconst point = dataItem.get(\"point\");\r\n\t\t\t\t\t\tif (point) {\r\n\t\t\t\t\t\t\tsumX += point.x;\r\n\t\t\t\t\t\t\tsumY += point.y;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst bullets = dataItem.bullets;\r\n\t\t\t\t\t\tif (bullets) {\r\n\t\t\t\t\t\t\t$array.each(bullets, (bullet) => {\r\n\t\t\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\t\t\tsprite.set(\"forceHidden\", true);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgroupId = dataItem.get(\"groupId\");\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tlet averageX = sumX / len;\r\n\t\t\t\t\tlet averageY = sumY / len;\r\n\r\n\t\t\t\t\tclusteredDataItem.setRaw(\"children\" as any, cluster);\r\n\t\t\t\t\tclusteredDataItem.setRaw(\"groupId\", groupId);\r\n\r\n\t\t\t\t\tconst prevLen = clusteredDataItem.get(\"value\" as any);\r\n\t\t\t\t\tclusteredDataItem.setRaw(\"value\" as any, len);\r\n\r\n\t\t\t\t\tconst bullet = clusteredDataItem.get(\"bullet\" as any);\r\n\t\t\t\t\tif (bullet) {\r\n\r\n\t\t\t\t\t\tlet geoPoint = this.chart!.invert({ x: averageX, y: averageY });\r\n\t\t\t\t\t\tif (geoPoint) {\r\n\t\t\t\t\t\t\tclusteredDataItem.setAll({\r\n\t\t\t\t\t\t\t\tlongitude: geoPoint.longitude,\r\n\t\t\t\t\t\t\t\tlatitude: geoPoint.latitude,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis._positionBullets(clusteredDataItem)\r\n\r\n\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\tsprite.set(\"forceHidden\", false);\r\n\t\t\t\t\t\t\t//sprite.setAll({ x: averageX, y: averageY });\r\n\r\n\t\t\t\t\t\t\tif (prevLen != len) {\r\n\t\t\t\t\t\t\t\tif (sprite instanceof Container) {\r\n\t\t\t\t\t\t\t\t\tsprite.walkChildren((child) => {\r\n\t\t\t\t\t\t\t\t\t\tif (child instanceof Label) {\r\n\t\t\t\t\t\t\t\t\t\t\tchild.text.markDirtyText();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\tlet children = dataItem.get(\"children\");\r\n\t\t\tif (!children || children.length == 0) {\r\n\t\t\t\tconst bullet = dataItem.get(\"bullet\" as any);\r\n\t\t\t\tif (bullet) {\r\n\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\tsprite.set(\"forceHidden\", true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprotected _onDataClear() {\r\n\t\tsuper._onDataClear();\r\n\r\n\t\t$array.each(this.clusteredDataItems, (dataItem) => {\r\n\t\t\tconst bullet = dataItem.get(\"bullet\" as any);\r\n\t\t\tif (bullet) {\r\n\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\tif (sprite) {\r\n\t\t\t\t\tsprite.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.clusteredDataItems = [];\r\n\r\n\t}\r\n\r\n\r\n\tprotected _scatterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>) {\r\n\t\tconst chart = this.chart;\r\n\t\tif (chart && chart.get(\"zoomLevel\", 1) >= chart.get(\"maxZoomLevel\", 100) * this.get(\"stopClusterZoom\", 0.95)) {\r\n\t\t\tconst scatterDistance = this.get(\"scatterDistance\", 5);\r\n\t\t\tconst scatterDistSq = scatterDistance * scatterDistance;\r\n\r\n\t\t\t// Pre-filter to candidates with valid points\r\n\t\t\tconst candidates: Array<{ di: DataItem<IClusteredPointSeriesDataItem>, x: number, y: number }> = [];\r\n\t\t\tfor (let i = 0; i < dataItems.length; i++) {\r\n\t\t\t\tconst di = dataItems[i];\r\n\t\t\t\tif (!di.get(\"clipped\")) {\r\n\t\t\t\t\tconst pt = di.get(\"point\");\r\n\t\t\t\t\tif (pt) {\r\n\t\t\t\t\t\tcandidates.push({ di: di, x: pt.x, y: pt.y });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Spatial grid: cell size = scatterDistance\r\n\t\t\tconst grid = new Map<string, number[]>();\r\n\t\t\tfor (let i = 0; i < candidates.length; i++) {\r\n\t\t\t\tconst c = candidates[i];\r\n\t\t\t\tconst key = Math.floor(c.x / scatterDistance) + \",\" + Math.floor(c.y / scatterDistance);\r\n\t\t\t\tlet cell = grid.get(key);\r\n\t\t\t\tif (!cell) {\r\n\t\t\t\t\tcell = [];\r\n\t\t\t\t\tgrid.set(key, cell);\r\n\t\t\t\t}\r\n\t\t\t\tcell.push(i);\r\n\t\t\t}\r\n\r\n\t\t\tconst visited = new Uint8Array(candidates.length);\r\n\r\n\t\t\tfor (let i = 0; i < candidates.length; i++) {\r\n\t\t\t\tif (visited[i]) continue;\r\n\t\t\t\tvisited[i] = 1;\r\n\r\n\t\t\t\tthis._scatterIndex++;\r\n\t\t\t\tthis._scatters[this._scatterIndex] = [];\r\n\t\t\t\tconst scatter = this._scatters[this._scatterIndex];\r\n\r\n\t\t\t\tconst seed = candidates[i];\r\n\t\t\t\tscatter.push(seed.di);\r\n\r\n\t\t\t\tconst queue = [seed];\r\n\t\t\t\tlet head = 0;\r\n\r\n\t\t\t\twhile (head < queue.length) {\r\n\t\t\t\t\tconst pt = queue[head++];\r\n\t\t\t\t\tconst cx = Math.floor(pt.x / scatterDistance);\r\n\t\t\t\t\tconst cy = Math.floor(pt.y / scatterDistance);\r\n\r\n\t\t\t\t\tfor (let dcx = -1; dcx <= 1; dcx++) {\r\n\t\t\t\t\t\tfor (let dcy = -1; dcy <= 1; dcy++) {\r\n\t\t\t\t\t\t\tconst cell = grid.get((cx + dcx) + \",\" + (cy + dcy));\r\n\t\t\t\t\t\t\tif (cell) {\r\n\t\t\t\t\t\t\t\tfor (let k = 0; k < cell.length; k++) {\r\n\t\t\t\t\t\t\t\t\tconst idx = cell[k];\r\n\t\t\t\t\t\t\t\t\tif (visited[idx]) continue;\r\n\t\t\t\t\t\t\t\t\tconst c = candidates[idx];\r\n\t\t\t\t\t\t\t\t\tconst dx = c.x - pt.x;\r\n\t\t\t\t\t\t\t\t\tconst dy = c.y - pt.y;\r\n\t\t\t\t\t\t\t\t\tif (dx * dx + dy * dy < scatterDistSq) {\r\n\t\t\t\t\t\t\t\t\t\tvisited[idx] = 1;\r\n\t\t\t\t\t\t\t\t\t\tscatter.push(c.di);\r\n\t\t\t\t\t\t\t\t\t\tqueue.push(c);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$array.each(this._scatters, (scatter) => {\r\n\t\t\t\tlet len = scatter.length;\r\n\r\n\t\t\t\tif (len > 1) {\r\n\t\t\t\t\tlet previousCircles: Array<{ x: number, y: number, radius: number }> = [];\r\n\t\t\t\t\tlet s = 0;\r\n\t\t\t\t\tlet radius = this.get(\"scatterRadius\", 8);\r\n\t\t\t\t\t$array.each(scatter, (dataItem) => {\r\n\t\t\t\t\t\tlet spiralPoint = this._spiral[s];\r\n\t\t\t\t\t\tlet intersects = true;\r\n\r\n\t\t\t\t\t\tif (previousCircles.length > 0) {\r\n\t\t\t\t\t\t\twhile (intersects) {\r\n\t\t\t\t\t\t\t\t$array.each(previousCircles, (previousCircle) => {\r\n\t\t\t\t\t\t\t\t\tintersects = false;\r\n\t\t\t\t\t\t\t\t\twhile ($math.circlesOverlap({ x: spiralPoint.x, y: spiralPoint.y, radius: radius }, previousCircle)) {\r\n\t\t\t\t\t\t\t\t\t\ts++;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (this._spiral[s] == undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tintersects = false;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\tintersects = true;\r\n\t\t\t\t\t\t\t\t\t\t\tspiralPoint = this._spiral[s];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst dx = spiralPoint.x;\r\n\t\t\t\t\t\tconst dy = spiralPoint.y;\r\n\r\n\t\t\t\t\t\tpreviousCircles.push({ x: dx, y: dy, radius: radius });\r\n\r\n\t\t\t\t\t\tdataItem.set(\"dx\", dx);\r\n\t\t\t\t\t\tdataItem.set(\"dy\", dy);\r\n\r\n\t\t\t\t\t\tconst bullets = dataItem.bullets;\r\n\t\t\t\t\t\tif (bullets) {\r\n\t\t\t\t\t\t\t$array.each(bullets, (bullet) => {\r\n\t\t\t\t\t\t\t\tconst sprite = bullet.get(\"sprite\");\r\n\t\t\t\t\t\t\t\tif (sprite) {\r\n\t\t\t\t\t\t\t\t\tsprite.setAll({ dx: dx, dy: dy });\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapPointSeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/MapPointSeries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAoB,MAAM,oBAAoB,CAAC;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAI5D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;CAChE;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IAElE;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAE9C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAEhD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAEtD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IAElE;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CAEnB;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAE5C,OAAc,SAAS,EAAE,MAAM,CAAoB;IACnD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAA2D;IAEnF,SAAS,EAAE,uBAAuB,CAAC;IACnC,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,iBAAiB,EAAE,uBAAuB,CAAC;IAE1D,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAA2B;IAEhF,SAAS,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IAErC,SAAS,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"MapPointSeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/MapPointSeries.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ export class MapPointSeries extends MapSeries {
|
|
|
16
16
|
}
|
|
17
17
|
_afterNew() {
|
|
18
18
|
this.fields.push("polygonId", "lineId", "longitude", "latitude", "fixed");
|
|
19
|
+
this._setRawDefault("longitudeField", "longitude");
|
|
20
|
+
this._setRawDefault("latitudeField", "latitude");
|
|
19
21
|
super._afterNew();
|
|
20
22
|
}
|
|
21
23
|
/**
|