cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
248 lines (247 loc) • 7.34 kB
JavaScript
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 };