UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

248 lines (247 loc) 7.34 kB
import { __extends } from "../../../../tslib/tslib.es6.mjs"; import { isArray, each, merge, createHashMap, map, filter, indexOf, isString, isNumber } from "../../../../zrender/lib/core/util.mjs"; import Model from "../../model/Model.mjs"; import { isNameSpecified } from "../../util/model.mjs"; import ComponentModel from "../../model/Component.mjs"; var getDefaultSelectorOptions = function(ecModel, type) { if (type === "all") { return { type: "all", title: ecModel.getLocaleModel().get(["legend", "selector", "all"]) }; } else if (type === "inverse") { return { type: "inverse", title: ecModel.getLocaleModel().get(["legend", "selector", "inverse"]) }; } }; var LegendModel = function(_super) { __extends(LegendModel2, _super); function LegendModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = LegendModel2.type; _this.layoutMode = { type: "box", ignoreSize: true }; return _this; } LegendModel2.prototype.init = function(option, parentModel, ecModel) { this.mergeDefaultAndTheme(option, ecModel); option.selected = option.selected || {}; this._updateSelector(option); }; LegendModel2.prototype.mergeOption = function(option, ecModel) { _super.prototype.mergeOption.call(this, option, ecModel); this._updateSelector(option); }; LegendModel2.prototype._updateSelector = function(option) { var selector = option.selector; var ecModel = this.ecModel; if (selector === true) { selector = option.selector = ["all", "inverse"]; } if (isArray(selector)) { each(selector, function(item, index) { isString(item) && (item = { type: item }); selector[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type)); }); } }; LegendModel2.prototype.optionUpdated = function() { this._updateData(this.ecModel); var legendData = this._data; if (legendData[0] && this.get("selectedMode") === "single") { var hasSelected = false; for (var i = 0; i < legendData.length; i++) { var name_1 = legendData[i].get("name"); if (this.isSelected(name_1)) { this.select(name_1); hasSelected = true; break; } } !hasSelected && this.select(legendData[0].get("name")); } }; LegendModel2.prototype._updateData = function(ecModel) { var potentialData = []; var availableNames = []; ecModel.eachRawSeries(function(seriesModel) { var seriesName = seriesModel.name; availableNames.push(seriesName); var isPotential; if (seriesModel.legendVisualProvider) { var provider = seriesModel.legendVisualProvider; var names = provider.getAllNames(); if (!ecModel.isSeriesFiltered(seriesModel)) { availableNames = availableNames.concat(names); } if (names.length) { potentialData = potentialData.concat(names); } else { isPotential = true; } } else { isPotential = true; } if (isPotential && isNameSpecified(seriesModel)) { potentialData.push(seriesModel.name); } }); this._availableNames = availableNames; var rawData = this.get("data") || potentialData; var legendNameMap = createHashMap(); var legendData = map(rawData, function(dataItem) { if (isString(dataItem) || isNumber(dataItem)) { dataItem = { name: dataItem }; } if (legendNameMap.get(dataItem.name)) { return null; } legendNameMap.set(dataItem.name, true); return new Model(dataItem, this, this.ecModel); }, this); this._data = filter(legendData, function(item) { return !!item; }); }; LegendModel2.prototype.getData = function() { return this._data; }; LegendModel2.prototype.select = function(name) { var selected = this.option.selected; var selectedMode = this.get("selectedMode"); if (selectedMode === "single") { var data = this._data; each(data, function(dataItem) { selected[dataItem.get("name")] = false; }); } selected[name] = true; }; LegendModel2.prototype.unSelect = function(name) { if (this.get("selectedMode") !== "single") { this.option.selected[name] = false; } }; LegendModel2.prototype.toggleSelected = function(name) { var selected = this.option.selected; if (!selected.hasOwnProperty(name)) { selected[name] = true; } this[selected[name] ? "unSelect" : "select"](name); }; LegendModel2.prototype.allSelect = function() { var data = this._data; var selected = this.option.selected; each(data, function(dataItem) { selected[dataItem.get("name", true)] = true; }); }; LegendModel2.prototype.inverseSelect = function() { var data = this._data; var selected = this.option.selected; each(data, function(dataItem) { var name = dataItem.get("name", true); if (!selected.hasOwnProperty(name)) { selected[name] = true; } selected[name] = !selected[name]; }); }; LegendModel2.prototype.isSelected = function(name) { var selected = this.option.selected; return !(selected.hasOwnProperty(name) && !selected[name]) && indexOf(this._availableNames, name) >= 0; }; LegendModel2.prototype.getOrient = function() { return this.get("orient") === "vertical" ? { index: 1, name: "vertical" } : { index: 0, name: "horizontal" }; }; LegendModel2.type = "legend.plain"; LegendModel2.dependencies = ["series"]; LegendModel2.defaultOption = { z: 4, show: true, orient: "horizontal", left: "center", top: 0, align: "auto", backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderRadius: 0, borderWidth: 0, padding: 5, itemGap: 10, itemWidth: 25, itemHeight: 14, symbolRotate: "inherit", symbolKeepAspect: true, inactiveColor: "#ccc", inactiveBorderColor: "#ccc", inactiveBorderWidth: "auto", itemStyle: { color: "inherit", opacity: "inherit", borderColor: "inherit", borderWidth: "auto", borderCap: "inherit", borderJoin: "inherit", borderDashOffset: "inherit", borderMiterLimit: "inherit" }, lineStyle: { width: "auto", color: "inherit", inactiveColor: "#ccc", inactiveWidth: 2, opacity: "inherit", type: "inherit", cap: "inherit", join: "inherit", dashOffset: "inherit", miterLimit: "inherit" }, textStyle: { color: "#333" }, selectedMode: true, selector: false, selectorLabel: { show: true, borderRadius: 10, padding: [3, 5, 3, 5], fontSize: 12, fontFamily: "sans-serif", color: "#666", borderWidth: 1, borderColor: "#666" }, emphasis: { selectorLabel: { show: true, color: "#eee", backgroundColor: "#666" } }, selectorPosition: "auto", selectorItemGap: 7, selectorButtonGap: 10, tooltip: { show: false } }; return LegendModel2; }(ComponentModel); var LegendModel$1 = LegendModel; export { LegendModel$1 as default };