123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- /**
- * (c) 2010-2019 Torstein Honsi
- *
- * License: www.highcharts.com/license
- */
- 'use strict';
- import H from '../parts/Globals.js';
- import '../parts/Utilities.js';
- import '../parts/Options.js';
- import '../parts/Point.js';
- import '../parts-more/BubbleSeries.js';
- var merge = H.merge,
- Point = H.Point,
- seriesType = H.seriesType,
- seriesTypes = H.seriesTypes;
- // The mapbubble series type
- if (seriesTypes.bubble) {
- /**
- * @private
- * @class
- * @name Highcharts.seriesTypes.mapbubble
- *
- * @augments Highcharts.Series
- */
- seriesType('mapbubble', 'bubble'
- /**
- * A map bubble series is a bubble series laid out on top of a map series,
- * where each bubble is tied to a specific map area.
- *
- * @sample maps/demo/map-bubble/
- * Map bubble chart
- *
- * @extends plotOptions.bubble
- * @product highmaps
- * @optionparent plotOptions.mapbubble
- */
- , {
- /**
- * The main color of the series. This color affects both the fill and
- * the stroke of the bubble. For enhanced control, use `marker` options.
- *
- * @sample {highmaps} maps/plotoptions/mapbubble-color/
- * Pink bubbles
- *
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
- * @apioption plotOptions.mapbubble.color
- */
- /**
- * Whether to display negative sized bubbles. The threshold is given
- * by the [zThreshold](#plotOptions.mapbubble.zThreshold) option, and
- * negative bubbles can be visualized by setting [negativeColor](
- * #plotOptions.bubble.negativeColor).
- *
- * @type {boolean}
- * @default true
- * @apioption plotOptions.mapbubble.displayNegative
- */
- /**
- * @sample {highmaps} maps/demo/map-bubble/
- * Bubble size
- *
- * @apioption plotOptions.mapbubble.maxSize
- */
- /**
- * @sample {highmaps} maps/demo/map-bubble/
- * Bubble size
- *
- * @apioption plotOptions.mapbubble.minSize
- */
- /**
- * When a point's Z value is below the
- * [zThreshold](#plotOptions.mapbubble.zThreshold) setting, this color
- * is used.
- *
- * @sample {highmaps} maps/plotoptions/mapbubble-negativecolor/
- * Negative color below a threshold
- *
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
- * @apioption plotOptions.mapbubble.negativeColor
- */
- /**
- * Whether the bubble's value should be represented by the area or the
- * width of the bubble. The default, `area`, corresponds best to the
- * human perception of the size of each bubble.
- *
- * @type {string}
- * @default area
- * @validvalue ["area", "width"]
- * @apioption plotOptions.mapbubble.sizeBy
- */
- /**
- * When this is true, the absolute value of z determines the size of
- * the bubble. This means that with the default `zThreshold` of 0, a
- * bubble of value -1 will have the same size as a bubble of value 1,
- * while a bubble of value 0 will have a smaller size according to
- * `minSize`.
- *
- * @sample {highmaps} highcharts/plotoptions/bubble-sizebyabsolutevalue/
- * Size by absolute value, various thresholds
- *
- * @type {boolean}
- * @default false
- * @since 1.1.9
- * @apioption plotOptions.mapbubble.sizeByAbsoluteValue
- */
- /**
- * The minimum for the Z value range. Defaults to the highest Z value
- * in the data.
- *
- * @see [zMax](#plotOptions.mapbubble.zMin)
- *
- * @sample {highmaps} highcharts/plotoptions/bubble-zmin-zmax/
- * Z has a possible range of 0-100
- *
- * @type {number}
- * @since 1.0.3
- * @apioption plotOptions.mapbubble.zMax
- */
- /**
- * The minimum for the Z value range. Defaults to the lowest Z value
- * in the data.
- *
- * @see [zMax](#plotOptions.mapbubble.zMax)
- *
- * @sample {highmaps} highcharts/plotoptions/bubble-zmin-zmax/
- * Z has a possible range of 0-100
- *
- * @type {number}
- * @since 1.0.3
- * @apioption plotOptions.mapbubble.zMin
- */
- /**
- * When [displayNegative](#plotOptions.mapbubble.displayNegative) is
- * `false`, bubbles with lower Z values are skipped. When
- * `displayNegative` is `true` and a [negativeColor](
- * #plotOptions.mapbubble.negativeColor) is given, points with lower Z
- * is colored.
- *
- * @sample {highmaps} maps/plotoptions/mapbubble-negativecolor/
- * Negative color below a threshold
- *
- * @type {number}
- * @default 0
- * @apioption plotOptions.mapbubble.zThreshold
- */
- animationLimit: 500,
- tooltip: {
- pointFormat: '{point.name}: {point.z}'
- }
- // Prototype members
- }, {
- xyFromShape: true,
- type: 'mapbubble',
- // If one single value is passed, it is interpreted as z
- pointArrayMap: ['z'],
- // Return the map area identified by the dataJoinBy option
- getMapData: seriesTypes.map.prototype.getMapData,
- getBox: seriesTypes.map.prototype.getBox,
- setData: seriesTypes.map.prototype.setData
- // Point class
- }, {
- applyOptions: function (options, x) {
- var point;
- if (
- options &&
- options.lat !== undefined &&
- options.lon !== undefined
- ) {
- point = Point.prototype.applyOptions.call(
- this,
- merge(
- options,
- this.series.chart.fromLatLonToPoint(options)
- ),
- x
- );
- } else {
- point = seriesTypes.map.prototype.pointClass.prototype
- .applyOptions.call(this, options, x);
- }
- return point;
- },
- isValid: function () {
- return typeof this.z === 'number';
- },
- ttBelow: false
- });
- }
- /**
- * A `mapbubble` series. If the [type](#series.mapbubble.type) option
- * is not specified, it is inherited from [chart.type](#chart.type).
- *
- * @extends series,plotOptions.mapbubble
- * @excluding dataParser, dataURL
- * @product highmaps
- * @apioption series.mapbubble
- */
- /**
- * An array of data points for the series. For the `mapbubble` series
- * type, points can be given in the following ways:
- *
- * 1. An array of numerical values. In this case, the numerical values
- * will be interpreted as `z` options. Example:
- *
- * ```js
- * data: [0, 5, 3, 5]
- * ```
- *
- * 2. An array of objects with named values. The following snippet shows only a
- * few settings, see the complete options set below. If the total number of data
- * points exceeds the series' [turboThreshold](
- * #series.mapbubble.turboThreshold),
- * this option is not available.
- *
- * ```js
- * data: [{
- * z: 9,
- * name: "Point2",
- * color: "#00FF00"
- * }, {
- * z: 10,
- * name: "Point1",
- * color: "#FF00FF"
- * }]
- * ```
- *
- * @type {Array<number|*>}
- * @extends series.mappoint.data
- * @excluding labelrank, middleX, middleY, path, value, x, y, lat, lon
- * @product highmaps
- * @apioption series.mapbubble.data
- */
- /**
- * While the `x` and `y` values of the bubble are determined by the
- * underlying map, the `z` indicates the actual value that gives the
- * size of the bubble.
- *
- * @sample {highmaps} maps/demo/map-bubble/
- * Bubble
- *
- * @type {number}
- * @product highmaps
- * @apioption series.mapbubble.data.z
- */
- /**
- * @excluding enabled, enabledThreshold, height, radius, width
- * @apioption series.mapbubble.marker
- */
|