visualEncoding.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. var echarts = require("../../echarts");
  2. var zrUtil = require("zrender/lib/core/util");
  3. var visualSolution = require("../../visual/visualSolution");
  4. var VisualMapping = require("../../visual/VisualMapping");
  5. echarts.registerVisual(echarts.PRIORITY.VISUAL.COMPONENT, function (ecModel) {
  6. ecModel.eachComponent('visualMap', function (visualMapModel) {
  7. processSingleVisualMap(visualMapModel, ecModel);
  8. });
  9. prepareVisualMeta(ecModel);
  10. });
  11. function processSingleVisualMap(visualMapModel, ecModel) {
  12. visualMapModel.eachTargetSeries(function (seriesModel) {
  13. var data = seriesModel.getData();
  14. visualSolution.applyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, data, visualMapModel.getValueState, visualMapModel, visualMapModel.getDataDimension(data));
  15. });
  16. } // Only support color.
  17. function prepareVisualMeta(ecModel) {
  18. ecModel.eachSeries(function (seriesModel) {
  19. var data = seriesModel.getData();
  20. var visualMetaList = [];
  21. ecModel.eachComponent('visualMap', function (visualMapModel) {
  22. if (visualMapModel.isTargetSeries(seriesModel)) {
  23. var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {
  24. stops: [],
  25. outerColors: []
  26. };
  27. visualMeta.dimension = visualMapModel.getDataDimension(data);
  28. visualMetaList.push(visualMeta);
  29. }
  30. }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));
  31. seriesModel.getData().setVisual('visualMeta', visualMetaList);
  32. });
  33. } // FIXME
  34. // performance and export for heatmap?
  35. // value can be Infinity or -Infinity
  36. function getColorVisual(seriesModel, visualMapModel, value, valueState) {
  37. var mappings = visualMapModel.targetVisuals[valueState];
  38. var visualTypes = VisualMapping.prepareVisualTypes(mappings);
  39. var resultVisual = {
  40. color: seriesModel.getData().getVisual('color') // default color.
  41. };
  42. for (var i = 0, len = visualTypes.length; i < len; i++) {
  43. var type = visualTypes[i];
  44. var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];
  45. mapping && mapping.applyVisual(value, getVisual, setVisual);
  46. }
  47. return resultVisual.color;
  48. function getVisual(key) {
  49. return resultVisual[key];
  50. }
  51. function setVisual(key, value) {
  52. resultVisual[key] = value;
  53. }
  54. }