| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | 
							
- /*
 
- * 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.
 
- */
 
- /**
 
-  * Link lists and struct (graph or tree)
 
-  */
 
- import { curry, each, assert, extend, map, keys } from 'zrender/lib/core/util.js';
 
- import { makeInner } from '../../util/model.js';
 
- var inner = makeInner();
 
- function linkSeriesData(opt) {
 
-   var mainData = opt.mainData;
 
-   var datas = opt.datas;
 
-   if (!datas) {
 
-     datas = {
 
-       main: mainData
 
-     };
 
-     opt.datasAttr = {
 
-       main: 'data'
 
-     };
 
-   }
 
-   opt.datas = opt.mainData = null;
 
-   linkAll(mainData, datas, opt); // Porxy data original methods.
 
-   each(datas, function (data) {
 
-     each(mainData.TRANSFERABLE_METHODS, function (methodName) {
 
-       data.wrapMethod(methodName, curry(transferInjection, opt));
 
-     });
 
-   }); // Beyond transfer, additional features should be added to `cloneShallow`.
 
-   mainData.wrapMethod('cloneShallow', curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger
 
-   // another changable methods, which may bring about dead lock.
 
-   each(mainData.CHANGABLE_METHODS, function (methodName) {
 
-     mainData.wrapMethod(methodName, curry(changeInjection, opt));
 
-   }); // Make sure datas contains mainData.
 
-   assert(datas[mainData.dataType] === mainData);
 
- }
 
- function transferInjection(opt, res) {
 
-   if (isMainData(this)) {
 
-     // Transfer datas to new main data.
 
-     var datas = extend({}, inner(this).datas);
 
-     datas[this.dataType] = res;
 
-     linkAll(res, datas, opt);
 
-   } else {
 
-     // Modify the reference in main data to point newData.
 
-     linkSingle(res, this.dataType, inner(this).mainData, opt);
 
-   }
 
-   return res;
 
- }
 
- function changeInjection(opt, res) {
 
-   opt.struct && opt.struct.update();
 
-   return res;
 
- }
 
- function cloneShallowInjection(opt, res) {
 
-   // cloneShallow, which brings about some fragilities, may be inappropriate
 
-   // to be exposed as an API. So for implementation simplicity we can make
 
-   // the restriction that cloneShallow of not-mainData should not be invoked
 
-   // outside, but only be invoked here.
 
-   each(inner(res).datas, function (data, dataType) {
 
-     data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);
 
-   });
 
-   return res;
 
- }
 
- /**
 
-  * Supplement method to List.
 
-  *
 
-  * @public
 
-  * @param [dataType] If not specified, return mainData.
 
-  */
 
- function getLinkedData(dataType) {
 
-   var mainData = inner(this).mainData;
 
-   return dataType == null || mainData == null ? mainData : inner(mainData).datas[dataType];
 
- }
 
- /**
 
-  * Get list of all linked data
 
-  */
 
- function getLinkedDataAll() {
 
-   var mainData = inner(this).mainData;
 
-   return mainData == null ? [{
 
-     data: mainData
 
-   }] : map(keys(inner(mainData).datas), function (type) {
 
-     return {
 
-       type: type,
 
-       data: inner(mainData).datas[type]
 
-     };
 
-   });
 
- }
 
- function isMainData(data) {
 
-   return inner(data).mainData === data;
 
- }
 
- function linkAll(mainData, datas, opt) {
 
-   inner(mainData).datas = {};
 
-   each(datas, function (data, dataType) {
 
-     linkSingle(data, dataType, mainData, opt);
 
-   });
 
- }
 
- function linkSingle(data, dataType, mainData, opt) {
 
-   inner(mainData).datas[dataType] = data;
 
-   inner(data).mainData = mainData;
 
-   data.dataType = dataType;
 
-   if (opt.struct) {
 
-     data[opt.structAttr] = opt.struct;
 
-     opt.struct[opt.datasAttr[dataType]] = data;
 
-   } // Supplement method.
 
-   data.getLinkedData = getLinkedData;
 
-   data.getLinkedDataAll = getLinkedDataAll;
 
- }
 
- export default linkSeriesData;
 
 
  |