cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
151 lines (150 loc) • 4.9 kB
JavaScript
import { __extends } from "../../../../tslib/tslib.es6.mjs";
import { curry, createHashMap, each } from "../../../../zrender/lib/core/util.mjs";
import createSeriesDataSimply from "../helper/createSeriesDataSimply.mjs";
import SeriesModel from "../../model/Series.mjs";
import geoSourceManager from "../../coord/geo/geoSourceManager.mjs";
import { makeSeriesEncodeForNameBased } from "../../data/helper/sourceHelper.mjs";
import { createTooltipMarkup } from "../../component/tooltip/tooltipMarkup.mjs";
import { createSymbol } from "../../util/symbol.mjs";
var MapSeries = function(_super) {
__extends(MapSeries2, _super);
function MapSeries2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = MapSeries2.type;
_this.needsDrawMap = false;
_this.seriesGroup = [];
_this.getTooltipPosition = function(dataIndex) {
if (dataIndex != null) {
var name_1 = this.getData().getName(dataIndex);
var geo = this.coordinateSystem;
var region = geo.getRegion(name_1);
return region && geo.dataToPoint(region.getCenter());
}
};
return _this;
}
MapSeries2.prototype.getInitialData = function(option) {
var data = createSeriesDataSimply(this, {
coordDimensions: ["value"],
encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)
});
var dataNameMap = createHashMap();
var toAppendNames = [];
for (var i = 0, len = data.count(); i < len; i++) {
var name_2 = data.getName(i);
dataNameMap.set(name_2, true);
}
var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
each(geoSource.regions, function(region) {
var name = region.name;
if (!dataNameMap.get(name)) {
toAppendNames.push(name);
}
});
data.appendValues([], toAppendNames);
return data;
};
MapSeries2.prototype.getHostGeoModel = function() {
var geoIndex = this.option.geoIndex;
return geoIndex != null ? this.ecModel.getComponent("geo", geoIndex) : null;
};
MapSeries2.prototype.getMapType = function() {
return (this.getHostGeoModel() || this).option.map;
};
MapSeries2.prototype.getRawValue = function(dataIndex) {
var data = this.getData();
return data.get(data.mapDimension("value"), dataIndex);
};
MapSeries2.prototype.getRegionModel = function(regionName) {
var data = this.getData();
return data.getItemModel(data.indexOfName(regionName));
};
MapSeries2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var value = this.getRawValue(dataIndex);
var name = data.getName(dataIndex);
var seriesGroup = this.seriesGroup;
var seriesNames = [];
for (var i = 0; i < seriesGroup.length; i++) {
var otherIndex = seriesGroup[i].originalData.indexOfName(name);
var valueDim = data.mapDimension("value");
if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {
seriesNames.push(seriesGroup[i].name);
}
}
return createTooltipMarkup("section", {
header: seriesNames.join(", "),
noHeader: !seriesNames.length,
blocks: [createTooltipMarkup("nameValue", {
name,
value
})]
});
};
MapSeries2.prototype.setZoom = function(zoom) {
this.option.zoom = zoom;
};
MapSeries2.prototype.setCenter = function(center) {
this.option.center = center;
};
MapSeries2.prototype.getLegendIcon = function(opt) {
var iconType = opt.icon || "roundRect";
var icon = createSymbol(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill);
icon.setStyle(opt.itemStyle);
icon.style.stroke = "none";
if (iconType.indexOf("empty") > -1) {
icon.style.stroke = icon.style.fill;
icon.style.fill = "#fff";
icon.style.lineWidth = 2;
}
return icon;
};
MapSeries2.type = "series.map";
MapSeries2.dependencies = ["geo"];
MapSeries2.layoutMode = "box";
MapSeries2.defaultOption = {
z: 2,
coordinateSystem: "geo",
map: "",
left: "center",
top: "center",
aspectScale: null,
showLegendSymbol: true,
boundingCoords: null,
center: null,
zoom: 1,
scaleLimit: null,
selectedMode: true,
label: {
show: false,
color: "#000"
},
itemStyle: {
borderWidth: 0.5,
borderColor: "#444",
areaColor: "#eee"
},
emphasis: {
label: {
show: true,
color: "rgb(100,0,0)"
},
itemStyle: {
areaColor: "rgba(255,215,0,0.8)"
}
},
select: {
label: {
show: true,
color: "rgb(100,0,0)"
},
itemStyle: {
color: "rgba(255,215,0,0.8)"
}
},
nameProperty: "name"
};
return MapSeries2;
}(SeriesModel);
var MapSeries$1 = MapSeries;
export { MapSeries$1 as default };