|   | 
| /* | 
| * 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 SeriesData from '../../data/SeriesData.js'; | 
| import * as zrUtil from 'zrender/lib/core/util.js'; | 
| import { defaultEmphasis } from '../../util/model.js'; | 
| import Model from '../../model/Model.js'; | 
| import createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge.js'; | 
| import LegendVisualProvider from '../../visual/LegendVisualProvider.js'; | 
| import SeriesModel from '../../model/Series.js'; | 
| import { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js'; | 
| import { defaultSeriesFormatTooltip } from '../../component/tooltip/seriesFormatTooltip.js'; | 
| import { initCurvenessList, createEdgeMapForCurveness } from '../helper/multipleGraphEdgeHelper.js'; | 
| var GraphSeriesModel = /** @class */function (_super) { | 
|   __extends(GraphSeriesModel, _super); | 
|   function GraphSeriesModel() { | 
|     var _this = _super !== null && _super.apply(this, arguments) || this; | 
|     _this.type = GraphSeriesModel.type; | 
|     _this.hasSymbolVisual = true; | 
|     return _this; | 
|   } | 
|   GraphSeriesModel.prototype.init = function (option) { | 
|     _super.prototype.init.apply(this, arguments); | 
|     var self = this; | 
|     function getCategoriesData() { | 
|       return self._categoriesData; | 
|     } | 
|     // Provide data for legend select | 
|     this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData); | 
|     this.fillDataTextStyle(option.edges || option.links); | 
|     this._updateCategoriesData(); | 
|   }; | 
|   GraphSeriesModel.prototype.mergeOption = function (option) { | 
|     _super.prototype.mergeOption.apply(this, arguments); | 
|     this.fillDataTextStyle(option.edges || option.links); | 
|     this._updateCategoriesData(); | 
|   }; | 
|   GraphSeriesModel.prototype.mergeDefaultAndTheme = function (option) { | 
|     _super.prototype.mergeDefaultAndTheme.apply(this, arguments); | 
|     defaultEmphasis(option, 'edgeLabel', ['show']); | 
|   }; | 
|   GraphSeriesModel.prototype.getInitialData = function (option, ecModel) { | 
|     var edges = option.edges || option.links || []; | 
|     var nodes = option.data || option.nodes || []; | 
|     var self = this; | 
|     if (nodes && edges) { | 
|       // auto curveness | 
|       initCurvenessList(this); | 
|       var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink); | 
|       zrUtil.each(graph.edges, function (edge) { | 
|         createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex); | 
|       }, this); | 
|       return graph.data; | 
|     } | 
|     function beforeLink(nodeData, edgeData) { | 
|       // Overwrite nodeData.getItemModel to | 
|       nodeData.wrapMethod('getItemModel', function (model) { | 
|         var categoriesModels = self._categoriesModels; | 
|         var categoryIdx = model.getShallow('category'); | 
|         var categoryModel = categoriesModels[categoryIdx]; | 
|         if (categoryModel) { | 
|           categoryModel.parentModel = model.parentModel; | 
|           model.parentModel = categoryModel; | 
|         } | 
|         return model; | 
|       }); | 
|       // TODO Inherit resolveParentPath by default in Model#getModel? | 
|       var oldGetModel = Model.prototype.getModel; | 
|       function newGetModel(path, parentModel) { | 
|         var model = oldGetModel.call(this, path, parentModel); | 
|         model.resolveParentPath = resolveParentPath; | 
|         return model; | 
|       } | 
|       edgeData.wrapMethod('getItemModel', function (model) { | 
|         model.resolveParentPath = resolveParentPath; | 
|         model.getModel = newGetModel; | 
|         return model; | 
|       }); | 
|       function resolveParentPath(pathArr) { | 
|         if (pathArr && (pathArr[0] === 'label' || pathArr[1] === 'label')) { | 
|           var newPathArr = pathArr.slice(); | 
|           if (pathArr[0] === 'label') { | 
|             newPathArr[0] = 'edgeLabel'; | 
|           } else if (pathArr[1] === 'label') { | 
|             newPathArr[1] = 'edgeLabel'; | 
|           } | 
|           return newPathArr; | 
|         } | 
|         return pathArr; | 
|       } | 
|     } | 
|   }; | 
|   GraphSeriesModel.prototype.getGraph = function () { | 
|     return this.getData().graph; | 
|   }; | 
|   GraphSeriesModel.prototype.getEdgeData = function () { | 
|     return this.getGraph().edgeData; | 
|   }; | 
|   GraphSeriesModel.prototype.getCategoriesData = function () { | 
|     return this._categoriesData; | 
|   }; | 
|   GraphSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { | 
|     if (dataType === 'edge') { | 
|       var nodeData = this.getData(); | 
|       var params = this.getDataParams(dataIndex, dataType); | 
|       var edge = nodeData.graph.getEdgeByIndex(dataIndex); | 
|       var sourceName = nodeData.getName(edge.node1.dataIndex); | 
|       var targetName = nodeData.getName(edge.node2.dataIndex); | 
|       var nameArr = []; | 
|       sourceName != null && nameArr.push(sourceName); | 
|       targetName != null && nameArr.push(targetName); | 
|       return createTooltipMarkup('nameValue', { | 
|         name: nameArr.join(' > '), | 
|         value: params.value, | 
|         noValue: params.value == null | 
|       }); | 
|     } | 
|     // dataType === 'node' or empty | 
|     var nodeMarkup = defaultSeriesFormatTooltip({ | 
|       series: this, | 
|       dataIndex: dataIndex, | 
|       multipleSeries: multipleSeries | 
|     }); | 
|     return nodeMarkup; | 
|   }; | 
|   GraphSeriesModel.prototype._updateCategoriesData = function () { | 
|     var categories = zrUtil.map(this.option.categories || [], function (category) { | 
|       // Data must has value | 
|       return category.value != null ? category : zrUtil.extend({ | 
|         value: 0 | 
|       }, category); | 
|     }); | 
|     var categoriesData = new SeriesData(['value'], this); | 
|     categoriesData.initData(categories); | 
|     this._categoriesData = categoriesData; | 
|     this._categoriesModels = categoriesData.mapArray(function (idx) { | 
|       return categoriesData.getItemModel(idx); | 
|     }); | 
|   }; | 
|   GraphSeriesModel.prototype.setZoom = function (zoom) { | 
|     this.option.zoom = zoom; | 
|   }; | 
|   GraphSeriesModel.prototype.setCenter = function (center) { | 
|     this.option.center = center; | 
|   }; | 
|   GraphSeriesModel.prototype.isAnimationEnabled = function () { | 
|     return _super.prototype.isAnimationEnabled.call(this) | 
|     // Not enable animation when do force layout | 
|     && !(this.get('layout') === 'force' && this.get(['force', 'layoutAnimation'])); | 
|   }; | 
|   GraphSeriesModel.type = 'series.graph'; | 
|   GraphSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar']; | 
|   GraphSeriesModel.defaultOption = { | 
|     // zlevel: 0, | 
|     z: 2, | 
|     coordinateSystem: 'view', | 
|     // Default option for all coordinate systems | 
|     // xAxisIndex: 0, | 
|     // yAxisIndex: 0, | 
|     // polarIndex: 0, | 
|     // geoIndex: 0, | 
|     legendHoverLink: true, | 
|     layout: null, | 
|     // Configuration of circular layout | 
|     circular: { | 
|       rotateLabel: false | 
|     }, | 
|     // Configuration of force directed layout | 
|     force: { | 
|       initLayout: null, | 
|       // Node repulsion. Can be an array to represent range. | 
|       repulsion: [0, 50], | 
|       gravity: 0.1, | 
|       // Initial friction | 
|       friction: 0.6, | 
|       // Edge length. Can be an array to represent range. | 
|       edgeLength: 30, | 
|       layoutAnimation: true | 
|     }, | 
|     left: 'center', | 
|     top: 'center', | 
|     // right: null, | 
|     // bottom: null, | 
|     // width: '80%', | 
|     // height: '80%', | 
|     symbol: 'circle', | 
|     symbolSize: 10, | 
|     edgeSymbol: ['none', 'none'], | 
|     edgeSymbolSize: 10, | 
|     edgeLabel: { | 
|       position: 'middle', | 
|       distance: 5 | 
|     }, | 
|     draggable: false, | 
|     roam: false, | 
|     // Default on center of graph | 
|     center: null, | 
|     zoom: 1, | 
|     // Symbol size scale ratio in roam | 
|     nodeScaleRatio: 0.6, | 
|     // cursor: null, | 
|     // categories: [], | 
|     // data: [] | 
|     // Or | 
|     // nodes: [] | 
|     // | 
|     // links: [] | 
|     // Or | 
|     // edges: [] | 
|     label: { | 
|       show: false, | 
|       formatter: '{b}' | 
|     }, | 
|     itemStyle: {}, | 
|     lineStyle: { | 
|       color: '#aaa', | 
|       width: 1, | 
|       opacity: 0.5 | 
|     }, | 
|     emphasis: { | 
|       scale: true, | 
|       label: { | 
|         show: true | 
|       } | 
|     }, | 
|     select: { | 
|       itemStyle: { | 
|         borderColor: '#212121' | 
|       } | 
|     } | 
|   }; | 
|   return GraphSeriesModel; | 
| }(SeriesModel); | 
| export default GraphSeriesModel; |