project/node_modules/echarts/lib/coord/geo/GeoModel.js

212 lines
6.5 KiB
JavaScript
Raw Permalink Normal View History

2024-07-14 15:48:34 +08:00
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* AUTO-GENERATED FILE. DO NOT MODIFY.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { __extends } from "tslib";
import * as zrUtil from 'zrender/lib/core/util.js';
import * as modelUtil from '../../util/model.js';
import ComponentModel from '../../model/Component.js';
import Model from '../../model/Model.js';
import geoCreator from './geoCreator.js';
import geoSourceManager from './geoSourceManager.js';
;
var GeoModel = /** @class */function (_super) {
__extends(GeoModel, _super);
function GeoModel() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = GeoModel.type;
return _this;
}
GeoModel.prototype.init = function (option, parentModel, ecModel) {
var source = geoSourceManager.getGeoResource(option.map);
if (source && source.type === 'geoJSON') {
var itemStyle = option.itemStyle = option.itemStyle || {};
if (!('color' in itemStyle)) {
itemStyle.color = '#eee';
}
}
this.mergeDefaultAndTheme(option, ecModel);
// Default label emphasis `show`
modelUtil.defaultEmphasis(option, 'label', ['show']);
};
GeoModel.prototype.optionUpdated = function () {
var _this = this;
var option = this.option;
option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty);
var selectedMap = {};
this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) {
var regionName = regionOpt.name;
if (regionName) {
optionModelMap.set(regionName, new Model(regionOpt, _this, _this.ecModel));
if (regionOpt.selected) {
selectedMap[regionName] = true;
}
}
return optionModelMap;
}, zrUtil.createHashMap());
if (!option.selectedMap) {
option.selectedMap = selectedMap;
}
};
/**
* Get model of region.
*/
GeoModel.prototype.getRegionModel = function (name) {
return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);
};
/**
* Format label
* @param name Region name
*/
GeoModel.prototype.getFormattedLabel = function (name, status) {
var regionModel = this.getRegionModel(name);
var formatter = status === 'normal' ? regionModel.get(['label', 'formatter']) : regionModel.get(['emphasis', 'label', 'formatter']);
var params = {
name: name
};
if (zrUtil.isFunction(formatter)) {
params.status = status;
return formatter(params);
} else if (zrUtil.isString(formatter)) {
return formatter.replace('{a}', name != null ? name : '');
}
};
GeoModel.prototype.setZoom = function (zoom) {
this.option.zoom = zoom;
};
GeoModel.prototype.setCenter = function (center) {
this.option.center = center;
};
// PENGING If selectedMode is null ?
GeoModel.prototype.select = function (name) {
var option = this.option;
var selectedMode = option.selectedMode;
if (!selectedMode) {
return;
}
if (selectedMode !== 'multiple') {
option.selectedMap = null;
}
var selectedMap = option.selectedMap || (option.selectedMap = {});
selectedMap[name] = true;
};
GeoModel.prototype.unSelect = function (name) {
var selectedMap = this.option.selectedMap;
if (selectedMap) {
selectedMap[name] = false;
}
};
GeoModel.prototype.toggleSelected = function (name) {
this[this.isSelected(name) ? 'unSelect' : 'select'](name);
};
GeoModel.prototype.isSelected = function (name) {
var selectedMap = this.option.selectedMap;
return !!(selectedMap && selectedMap[name]);
};
GeoModel.type = 'geo';
GeoModel.layoutMode = 'box';
GeoModel.defaultOption = {
// zlevel: 0,
z: 0,
show: true,
left: 'center',
top: 'center',
// Default value:
// for geoSVG source: 1,
// for geoJSON source: 0.75.
aspectScale: null,
// /// Layout with center and size
// If you want to put map in a fixed size box with right aspect ratio
// This two properties may be more convenient
// layoutCenter: [50%, 50%]
// layoutSize: 100
silent: false,
// Map type
map: '',
// Define left-top, right-bottom coords to control view
// For example, [ [180, 90], [-180, -90] ]
boundingCoords: null,
// Default on center of map
center: null,
zoom: 1,
scaleLimit: null,
// selectedMode: false
label: {
show: false,
color: '#000'
},
itemStyle: {
borderWidth: 0.5,
borderColor: '#444'
// Default color:
// + geoJSON: #eee
// + geoSVG: null (use SVG original `fill`)
// color: '#eee'
},
emphasis: {
label: {
show: true,
color: 'rgb(100,0,0)'
},
itemStyle: {
color: 'rgba(255,215,0,0.8)'
}
},
select: {
label: {
show: true,
color: 'rgb(100,0,0)'
},
itemStyle: {
color: 'rgba(255,215,0,0.8)'
}
},
regions: []
// tooltip: {
// show: false
// }
};
return GeoModel;
}(ComponentModel);
export default GeoModel;