base.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891
  1. function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
  2. var Util = require('../util/common');
  3. var Base = require('../base');
  4. var GROUP_ATTRS = ['color', 'size', 'shape'];
  5. var FIELD_ORIGIN = '_origin';
  6. var FIELD_ORIGIN_Y = '_originY';
  7. var Global = require('../global');
  8. var Attr = require('../attr/index');
  9. var GeometryShape = require('./shape/shape');
  10. var Adjust = require('@antv/adjust/lib/base');
  11. function parseFields(field) {
  12. if (Util.isArray(field)) {
  13. return field;
  14. }
  15. if (Util.isString(field)) {
  16. return field.split('*');
  17. }
  18. return [field];
  19. }
  20. /**
  21. * The parent class for Geometry
  22. * @class Geom
  23. */
  24. var Geom =
  25. /*#__PURE__*/
  26. function (_Base) {
  27. _inheritsLoose(Geom, _Base);
  28. function Geom() {
  29. return _Base.apply(this, arguments) || this;
  30. }
  31. var _proto = Geom.prototype;
  32. _proto.getDefaultCfg = function getDefaultCfg() {
  33. return {
  34. /**
  35. * geometry type
  36. * @type {String}
  37. */
  38. type: null,
  39. /**
  40. * the data of geometry
  41. * @type {Array}
  42. */
  43. data: null,
  44. /**
  45. * the attrs of geo,etry
  46. * @type {Object}
  47. */
  48. attrs: {},
  49. scales: {},
  50. /**
  51. * group for storing the shapes
  52. * @type {Canvas}
  53. */
  54. container: null,
  55. /**
  56. * style options
  57. * @type {Object}
  58. */
  59. styleOptions: null,
  60. chart: null,
  61. shapeType: '',
  62. /**
  63. * wether to generate key points for each shape
  64. * @protected
  65. * @type {Boolean}
  66. */
  67. generatePoints: false,
  68. attrOptions: {},
  69. sortable: false,
  70. startOnZero: true,
  71. visible: true,
  72. connectNulls: false
  73. };
  74. };
  75. _proto.init = function init() {
  76. var self = this;
  77. self._initAttrs();
  78. var dataArray = self._processData();
  79. if (self.get('adjust')) {
  80. self._adjustData(dataArray);
  81. }
  82. self.set('dataArray', dataArray);
  83. };
  84. _proto._getGroupScales = function _getGroupScales() {
  85. var self = this;
  86. var scales = [];
  87. Util.each(GROUP_ATTRS, function (attrName) {
  88. var attr = self.getAttr(attrName);
  89. if (attr) {
  90. var attrScales = attr.scales;
  91. Util.each(attrScales, function (scale) {
  92. if (scale && scale.isCategory && scales.indexOf(scale) === -1) {
  93. scales.push(scale);
  94. }
  95. });
  96. }
  97. });
  98. return scales;
  99. };
  100. _proto._groupData = function _groupData(data) {
  101. var self = this;
  102. var colDefs = self.get('colDefs');
  103. var groupScales = self._getGroupScales();
  104. if (groupScales.length) {
  105. var appendConditions = {};
  106. var names = [];
  107. Util.each(groupScales, function (scale) {
  108. var field = scale.field;
  109. names.push(field);
  110. if (colDefs && colDefs[field] && colDefs[field].values) {
  111. // users have defined
  112. appendConditions[scale.field] = colDefs[field].values;
  113. }
  114. });
  115. return Util.Array.group(data, names, appendConditions);
  116. }
  117. return [data];
  118. };
  119. _proto._setAttrOptions = function _setAttrOptions(attrName, attrCfg) {
  120. var options = this.get('attrOptions');
  121. options[attrName] = attrCfg;
  122. };
  123. _proto._createAttrOption = function _createAttrOption(attrName, field, cfg, defaultValues) {
  124. var attrCfg = {};
  125. attrCfg.field = field;
  126. if (cfg) {
  127. if (Util.isFunction(cfg)) {
  128. attrCfg.callback = cfg;
  129. } else {
  130. attrCfg.values = cfg;
  131. }
  132. } else {
  133. attrCfg.values = defaultValues;
  134. }
  135. this._setAttrOptions(attrName, attrCfg);
  136. };
  137. _proto._initAttrs = function _initAttrs() {
  138. var self = this;
  139. var attrs = self.get('attrs');
  140. var attrOptions = self.get('attrOptions');
  141. var coord = self.get('coord');
  142. for (var type in attrOptions) {
  143. if (attrOptions.hasOwnProperty(type)) {
  144. var option = attrOptions[type];
  145. var className = Util.upperFirst(type);
  146. var fields = parseFields(option.field);
  147. if (type === 'position') {
  148. option.coord = coord;
  149. }
  150. var scales = [];
  151. for (var i = 0, len = fields.length; i < len; i++) {
  152. var field = fields[i];
  153. var scale = self._createScale(field);
  154. scales.push(scale);
  155. }
  156. if (type === 'position') {
  157. var yScale = scales[1];
  158. if (coord.type === 'polar' && coord.transposed && self.hasAdjust('stack')) {
  159. if (yScale.values.length) {
  160. yScale.change({
  161. nice: false,
  162. min: 0,
  163. max: Math.max.apply(null, yScale.values)
  164. });
  165. }
  166. }
  167. }
  168. option.scales = scales;
  169. var attr = new Attr[className](option);
  170. attrs[type] = attr;
  171. }
  172. }
  173. };
  174. _proto._createScale = function _createScale(field) {
  175. var scales = this.get('scales');
  176. var scale = scales[field];
  177. if (!scale) {
  178. scale = this.get('chart').createScale(field);
  179. scales[field] = scale;
  180. }
  181. return scale;
  182. };
  183. _proto._processData = function _processData() {
  184. var self = this;
  185. var data = this.get('data');
  186. var dataArray = [];
  187. var groupedArray = this._groupData(data);
  188. for (var i = 0, len = groupedArray.length; i < len; i++) {
  189. var subData = groupedArray[i];
  190. var tempData = self._saveOrigin(subData);
  191. if (this.hasAdjust('dodge')) {
  192. self._numberic(tempData);
  193. }
  194. dataArray.push(tempData);
  195. }
  196. return dataArray;
  197. };
  198. _proto._saveOrigin = function _saveOrigin(data) {
  199. var rst = [];
  200. for (var i = 0, len = data.length; i < len; i++) {
  201. var origin = data[i];
  202. var obj = {};
  203. for (var k in origin) {
  204. obj[k] = origin[k];
  205. }
  206. obj[FIELD_ORIGIN] = origin;
  207. rst.push(obj);
  208. }
  209. return rst;
  210. };
  211. _proto._numberic = function _numberic(data) {
  212. var positionAttr = this.getAttr('position');
  213. var scales = positionAttr.scales;
  214. for (var j = 0, len = data.length; j < len; j++) {
  215. var obj = data[j];
  216. var count = Math.min(2, scales.length);
  217. for (var i = 0; i < count; i++) {
  218. var scale = scales[i];
  219. if (scale.isCategory) {
  220. var field = scale.field;
  221. obj[field] = scale.translate(obj[field]);
  222. }
  223. }
  224. }
  225. };
  226. _proto._adjustData = function _adjustData(dataArray) {
  227. var self = this;
  228. var adjust = self.get('adjust');
  229. if (adjust) {
  230. var adjustType = Util.upperFirst(adjust.type);
  231. if (!Adjust[adjustType]) {
  232. throw new Error('not support such adjust : ' + adjust);
  233. }
  234. var xScale = self.getXScale();
  235. var yScale = self.getYScale();
  236. var cfg = Util.mix({
  237. xField: xScale.field,
  238. yField: yScale.field
  239. }, adjust);
  240. var adjustObject = new Adjust[adjustType](cfg);
  241. adjustObject.processAdjust(dataArray);
  242. if (adjustType === 'Stack') {
  243. self._updateStackRange(yScale.field, yScale, dataArray);
  244. }
  245. }
  246. };
  247. _proto._updateStackRange = function _updateStackRange(field, scale, dataArray) {
  248. var mergeArray = Util.Array.merge(dataArray);
  249. var min = scale.min;
  250. var max = scale.max;
  251. for (var i = 0, len = mergeArray.length; i < len; i++) {
  252. var obj = mergeArray[i];
  253. var tmpMin = Math.min.apply(null, obj[field]);
  254. var tmpMax = Math.max.apply(null, obj[field]);
  255. if (tmpMin < min) {
  256. min = tmpMin;
  257. }
  258. if (tmpMax > max) {
  259. max = tmpMax;
  260. }
  261. }
  262. if (min < scale.min || max > scale.max) {
  263. scale.change({
  264. min: min,
  265. max: max
  266. });
  267. }
  268. };
  269. _proto._sort = function _sort(mappedArray) {
  270. var self = this;
  271. var xScale = self.getXScale();
  272. var field = xScale.field,
  273. type = xScale.type;
  274. if (type !== 'identity' && xScale.values.length > 1) {
  275. Util.each(mappedArray, function (itemArr) {
  276. itemArr.sort(function (obj1, obj2) {
  277. if (type === 'timeCat') {
  278. return xScale._toTimeStamp(obj1[FIELD_ORIGIN][field]) - xScale._toTimeStamp(obj2[FIELD_ORIGIN][field]);
  279. }
  280. return xScale.translate(obj1[FIELD_ORIGIN][field]) - xScale.translate(obj2[FIELD_ORIGIN][field]);
  281. });
  282. });
  283. }
  284. self.set('hasSorted', true);
  285. self.set('dataArray', mappedArray);
  286. };
  287. _proto.paint = function paint() {
  288. var self = this;
  289. var dataArray = self.get('dataArray');
  290. var mappedArray = [];
  291. var shapeFactory = self.getShapeFactory();
  292. shapeFactory.setCoord(self.get('coord'));
  293. self._beforeMapping(dataArray);
  294. for (var i = 0, len = dataArray.length; i < len; i++) {
  295. var data = dataArray[i];
  296. if (data.length) {
  297. data = self._mapping(data);
  298. mappedArray.push(data);
  299. self.draw(data, shapeFactory);
  300. }
  301. }
  302. self.set('dataArray', mappedArray);
  303. };
  304. _proto.getShapeFactory = function getShapeFactory() {
  305. var shapeFactory = this.get('shapeFactory');
  306. if (!shapeFactory) {
  307. var shapeType = this.get('shapeType');
  308. shapeFactory = GeometryShape.getShapeFactory(shapeType);
  309. this.set('shapeFactory', shapeFactory);
  310. }
  311. return shapeFactory;
  312. };
  313. _proto._mapping = function _mapping(data) {
  314. var self = this;
  315. var attrs = self.get('attrs');
  316. var yField = self.getYScale().field;
  317. var mappedData = [];
  318. for (var i = 0, len = data.length; i < len; i++) {
  319. var record = data[i];
  320. var newRecord = {};
  321. newRecord[FIELD_ORIGIN] = record[FIELD_ORIGIN];
  322. newRecord.points = record.points; // 避免
  323. newRecord[FIELD_ORIGIN_Y] = record[yField];
  324. for (var k in attrs) {
  325. if (attrs.hasOwnProperty(k)) {
  326. var attr = attrs[k];
  327. var names = attr.names;
  328. var values = self._getAttrValues(attr, record);
  329. if (names.length > 1) {
  330. for (var j = 0, _len = values.length; j < _len; j++) {
  331. var val = values[j];
  332. var name = names[j];
  333. newRecord[name] = Util.isArray(val) && val.length === 1 ? val[0] : val;
  334. }
  335. } else {
  336. newRecord[names[0]] = values.length === 1 ? values[0] : values;
  337. }
  338. }
  339. }
  340. mappedData.push(newRecord);
  341. }
  342. return mappedData;
  343. };
  344. _proto._getAttrValues = function _getAttrValues(attr, record) {
  345. var scales = attr.scales;
  346. var params = [];
  347. for (var i = 0, len = scales.length; i < len; i++) {
  348. var scale = scales[i];
  349. var field = scale.field;
  350. if (scale.type === 'identity') {
  351. params.push(scale.value);
  352. } else {
  353. params.push(record[field]);
  354. }
  355. }
  356. var values = attr.mapping.apply(attr, params);
  357. return values;
  358. };
  359. _proto.getAttrValue = function getAttrValue(attrName, record) {
  360. var attr = this.getAttr(attrName);
  361. var rst = null;
  362. if (attr) {
  363. var values = this._getAttrValues(attr, record);
  364. rst = values[0];
  365. }
  366. return rst;
  367. };
  368. _proto._beforeMapping = function _beforeMapping(dataArray) {
  369. var self = this;
  370. if (self.get('sortable')) {
  371. self._sort(dataArray);
  372. }
  373. if (self.get('generatePoints')) {
  374. Util.each(dataArray, function (data) {
  375. self._generatePoints(data);
  376. });
  377. }
  378. };
  379. _proto.isInCircle = function isInCircle() {
  380. var coord = this.get('coord');
  381. return coord && coord.isPolar;
  382. };
  383. _proto.getCallbackCfg = function getCallbackCfg(fields, cfg, origin) {
  384. if (!fields) {
  385. return cfg;
  386. }
  387. var tmpCfg = {};
  388. var params = fields.map(function (field) {
  389. return origin[field];
  390. });
  391. Util.each(cfg, function (v, k) {
  392. if (Util.isFunction(v)) {
  393. tmpCfg[k] = v.apply(null, params);
  394. } else {
  395. tmpCfg[k] = v;
  396. }
  397. });
  398. return tmpCfg;
  399. };
  400. _proto.getDrawCfg = function getDrawCfg(obj) {
  401. var self = this;
  402. var isInCircle = self.isInCircle();
  403. var cfg = {
  404. origin: obj,
  405. x: obj.x,
  406. y: obj.y,
  407. color: obj.color,
  408. size: obj.size,
  409. shape: obj.shape,
  410. isInCircle: isInCircle,
  411. opacity: obj.opacity
  412. };
  413. var styleOptions = self.get('styleOptions');
  414. if (styleOptions && styleOptions.style) {
  415. cfg.style = self.getCallbackCfg(styleOptions.fields, styleOptions.style, obj[FIELD_ORIGIN]);
  416. }
  417. if (self.get('generatePoints')) {
  418. cfg.points = obj.points;
  419. }
  420. if (isInCircle) {
  421. cfg.center = self.get('coord').center;
  422. }
  423. return cfg;
  424. };
  425. _proto.draw = function draw(data, shapeFactory) {
  426. var self = this;
  427. var container = self.get('container');
  428. var yScale = self.getYScale();
  429. Util.each(data, function (obj, index) {
  430. if (yScale && Util.isNil(obj._origin[yScale.field])) {
  431. return;
  432. }
  433. obj.index = index;
  434. var cfg = self.getDrawCfg(obj);
  435. var shape = obj.shape;
  436. self.drawShape(shape, obj, cfg, container, shapeFactory);
  437. });
  438. };
  439. _proto.drawShape = function drawShape(shape, shapeData, cfg, container, shapeFactory) {
  440. var gShape = shapeFactory.drawShape(shape, cfg, container);
  441. if (gShape) {
  442. Util.each([].concat(gShape), function (s) {
  443. s.set('origin', shapeData);
  444. });
  445. }
  446. };
  447. _proto._generatePoints = function _generatePoints(data) {
  448. var self = this;
  449. var shapeFactory = self.getShapeFactory();
  450. var shapeAttr = self.getAttr('shape');
  451. for (var i = 0, len = data.length; i < len; i++) {
  452. var obj = data[i];
  453. var cfg = self.createShapePointsCfg(obj);
  454. var shape = shapeAttr ? self._getAttrValues(shapeAttr, obj) : null;
  455. var points = shapeFactory.getShapePoints(shape, cfg);
  456. obj.points = points;
  457. }
  458. };
  459. /**
  460. * get the info of each shape
  461. * @protected
  462. * @param {Object} obj the data item
  463. * @return {Object} cfg return the result
  464. */
  465. _proto.createShapePointsCfg = function createShapePointsCfg(obj) {
  466. var xScale = this.getXScale();
  467. var yScale = this.getYScale();
  468. var x = this._normalizeValues(obj[xScale.field], xScale);
  469. var y;
  470. if (yScale) {
  471. y = this._normalizeValues(obj[yScale.field], yScale);
  472. } else {
  473. y = obj.y ? obj.y : 0.1;
  474. }
  475. return {
  476. x: x,
  477. y: y,
  478. y0: yScale ? yScale.scale(this.getYMinValue()) : undefined
  479. };
  480. };
  481. _proto.getYMinValue = function getYMinValue() {
  482. var yScale = this.getYScale();
  483. var min = yScale.min,
  484. max = yScale.max;
  485. var value;
  486. if (this.get('startOnZero')) {
  487. if (max <= 0 && min <= 0) {
  488. value = max;
  489. } else {
  490. value = min >= 0 ? min : 0;
  491. }
  492. } else {
  493. value = min;
  494. }
  495. return value;
  496. };
  497. _proto._normalizeValues = function _normalizeValues(values, scale) {
  498. var rst = [];
  499. if (Util.isArray(values)) {
  500. for (var i = 0, len = values.length; i < len; i++) {
  501. var v = values[i];
  502. rst.push(scale.scale(v));
  503. }
  504. } else {
  505. rst = scale.scale(values);
  506. }
  507. return rst;
  508. };
  509. _proto.getAttr = function getAttr(name) {
  510. return this.get('attrs')[name];
  511. };
  512. _proto.getXScale = function getXScale() {
  513. return this.getAttr('position').scales[0];
  514. };
  515. _proto.getYScale = function getYScale() {
  516. return this.getAttr('position').scales[1];
  517. };
  518. _proto.hasAdjust = function hasAdjust(adjust) {
  519. return this.get('adjust') && this.get('adjust').type === adjust;
  520. };
  521. _proto._getSnap = function _getSnap(scale, item, arr) {
  522. var i = 0;
  523. var values;
  524. var yField = this.getYScale().field; // 叠加的维度
  525. if (this.hasAdjust('stack') && scale.field === yField) {
  526. values = [];
  527. arr.forEach(function (obj) {
  528. values.push(obj[FIELD_ORIGIN_Y]);
  529. });
  530. for (var len = values.length; i < len; i++) {
  531. if (values[0][0] > item) {
  532. break;
  533. }
  534. if (values[values.length - 1][1] <= item) {
  535. i = values.length - 1;
  536. break;
  537. }
  538. if (values[i][0] <= item && values[i][1] > item) {
  539. break;
  540. }
  541. }
  542. } else {
  543. values = scale.values;
  544. values.sort(function (a, b) {
  545. return a - b;
  546. });
  547. for (var _len2 = values.length; i < _len2; i++) {
  548. if ((values[0] + values[1]) / 2 > item) {
  549. break;
  550. }
  551. if ((values[i - 1] + values[i]) / 2 <= item && (values[i + 1] + values[i]) / 2 > item) {
  552. break;
  553. }
  554. if ((values[values.length - 2] + values[values.length - 1]) / 2 <= item) {
  555. i = values.length - 1;
  556. break;
  557. }
  558. }
  559. }
  560. var result = values[i];
  561. return result;
  562. };
  563. _proto.getSnapRecords = function getSnapRecords(point) {
  564. var self = this;
  565. var coord = self.get('coord');
  566. var xScale = self.getXScale();
  567. var yScale = self.getYScale();
  568. var xfield = xScale.field;
  569. var dataArray = self.get('dataArray');
  570. if (!this.get('hasSorted')) {
  571. this._sort(dataArray);
  572. }
  573. var rst = [];
  574. var invertPoint = coord.invertPoint(point);
  575. var invertPointX = invertPoint.x;
  576. if (self.isInCircle() && !coord.transposed && invertPointX > (1 + xScale.rangeMax()) / 2) {
  577. invertPointX = xScale.rangeMin();
  578. }
  579. var xValue = xScale.invert(invertPointX);
  580. if (!xScale.isCategory) {
  581. xValue = self._getSnap(xScale, xValue);
  582. }
  583. var tmp = [];
  584. dataArray.forEach(function (data) {
  585. data.forEach(function (obj) {
  586. var originValue = Util.isNil(obj[FIELD_ORIGIN]) ? obj[xfield] : obj[FIELD_ORIGIN][xfield];
  587. if (self._isEqual(originValue, xValue, xScale)) {
  588. tmp.push(obj);
  589. }
  590. });
  591. }); // special for pie chart
  592. if (this.hasAdjust('stack') && coord.isPolar && coord.transposed && xScale.values.length === 1) {
  593. if (invertPointX >= 0 && invertPointX <= 1) {
  594. var yValue = yScale.invert(invertPoint.y);
  595. yValue = self._getSnap(yScale, yValue, tmp);
  596. tmp.forEach(function (obj) {
  597. if (Util.isArray(yValue) ? obj[FIELD_ORIGIN_Y].toString() === yValue.toString() : obj[FIELD_ORIGIN_Y] === yValue) {
  598. rst.push(obj);
  599. }
  600. });
  601. }
  602. } else {
  603. rst = tmp;
  604. }
  605. return rst;
  606. };
  607. _proto._isEqual = function _isEqual(originValue, value, scale) {
  608. if (scale.type === 'timeCat') {
  609. return scale._toTimeStamp(originValue) === value;
  610. }
  611. return value === originValue;
  612. };
  613. _proto.position = function position(field) {
  614. this._setAttrOptions('position', {
  615. field: field
  616. });
  617. return this;
  618. };
  619. _proto.color = function color(field, values) {
  620. this._createAttrOption('color', field, values, Global.colors);
  621. return this;
  622. };
  623. _proto.size = function size(field, values) {
  624. this._createAttrOption('size', field, values, Global.sizes);
  625. return this;
  626. };
  627. _proto.shape = function shape(field, values) {
  628. var type = this.get('type');
  629. var shapes = Global.shapes[type] || [];
  630. this._createAttrOption('shape', field, values, shapes);
  631. return this;
  632. };
  633. _proto.style = function style(field, cfg) {
  634. var styleOptions = this.get('styleOptions');
  635. if (!styleOptions) {
  636. styleOptions = {};
  637. this.set('styleOptions', styleOptions);
  638. }
  639. if (Util.isObject(field)) {
  640. cfg = field;
  641. field = null;
  642. }
  643. var fields;
  644. if (field) {
  645. fields = parseFields(field);
  646. }
  647. styleOptions.fields = fields;
  648. styleOptions.style = cfg;
  649. return this;
  650. };
  651. _proto.adjust = function adjust(type) {
  652. if (Util.isString(type)) {
  653. type = {
  654. type: type
  655. };
  656. }
  657. this.set('adjust', type);
  658. return this;
  659. };
  660. _proto.animate = function animate(cfg) {
  661. this.set('animateCfg', cfg);
  662. return this;
  663. };
  664. _proto.reset = function reset() {
  665. this.set('attrOptions', {});
  666. this.set('adjust', null);
  667. this.clearInner();
  668. };
  669. _proto.clearInner = function clearInner() {
  670. var container = this.get('container');
  671. if (container) {
  672. container.clear();
  673. container.setMatrix([1, 0, 0, 1, 0, 0]);
  674. }
  675. container && container.clear();
  676. this.set('attrs', {});
  677. this.set('groupScales', null);
  678. this.set('xDistance', null);
  679. this.set('_width', null);
  680. };
  681. _proto.clear = function clear() {
  682. this.clearInner();
  683. this.set('scales', {});
  684. };
  685. _proto.destroy = function destroy() {
  686. this.clear();
  687. _Base.prototype.destroy.call(this);
  688. };
  689. _proto._display = function _display(visible) {
  690. this.set('visible', visible);
  691. var container = this.get('container');
  692. var canvas = container.get('canvas');
  693. container.set('visible', visible);
  694. canvas.draw();
  695. };
  696. _proto.show = function show() {
  697. this._display(true);
  698. };
  699. _proto.hide = function hide() {
  700. this._display(false);
  701. };
  702. return Geom;
  703. }(Base);
  704. module.exports = Geom;