axisModelCreator.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. var zrUtil = require("zrender/lib/core/util");
  2. var axisDefault = require("./axisDefault");
  3. var ComponentModel = require("../model/Component");
  4. var _layout = require("../util/layout");
  5. var getLayoutParams = _layout.getLayoutParams;
  6. var mergeLayoutParam = _layout.mergeLayoutParam;
  7. // FIXME axisType is fixed ?
  8. var AXIS_TYPES = ['value', 'category', 'time', 'log'];
  9. /**
  10. * Generate sub axis model class
  11. * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel'
  12. * @param {module:echarts/model/Component} BaseAxisModelClass
  13. * @param {Function} axisTypeDefaulter
  14. * @param {Object} [extraDefaultOption]
  15. */
  16. function _default(axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) {
  17. zrUtil.each(AXIS_TYPES, function (axisType) {
  18. BaseAxisModelClass.extend({
  19. type: axisName + 'Axis.' + axisType,
  20. mergeDefaultAndTheme: function (option, ecModel) {
  21. var layoutMode = this.layoutMode;
  22. var inputPositionParams = layoutMode ? getLayoutParams(option) : {};
  23. var themeModel = ecModel.getTheme();
  24. zrUtil.merge(option, themeModel.get(axisType + 'Axis'));
  25. zrUtil.merge(option, this.getDefaultOption());
  26. option.type = axisTypeDefaulter(axisName, option);
  27. if (layoutMode) {
  28. mergeLayoutParam(option, inputPositionParams, layoutMode);
  29. }
  30. },
  31. defaultOption: zrUtil.mergeAll([{}, axisDefault[axisType + 'Axis'], extraDefaultOption], true)
  32. });
  33. });
  34. ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', zrUtil.curry(axisTypeDefaulter, axisName));
  35. }
  36. module.exports = _default;