interactionMutex.js 854 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. var echarts = require("../../echarts");
  2. var ATTR = '\0_ec_interaction_mutex';
  3. function take(zr, resourceKey, userKey) {
  4. var store = getStore(zr);
  5. store[resourceKey] = userKey;
  6. }
  7. function release(zr, resourceKey, userKey) {
  8. var store = getStore(zr);
  9. var uKey = store[resourceKey];
  10. if (uKey === userKey) {
  11. store[resourceKey] = null;
  12. }
  13. }
  14. function isTaken(zr, resourceKey) {
  15. return !!getStore(zr)[resourceKey];
  16. }
  17. function getStore(zr) {
  18. return zr[ATTR] || (zr[ATTR] = {});
  19. }
  20. /**
  21. * payload: {
  22. * type: 'takeGlobalCursor',
  23. * key: 'dataZoomSelect', or 'brush', or ...,
  24. * If no userKey, release global cursor.
  25. * }
  26. */
  27. echarts.registerAction({
  28. type: 'takeGlobalCursor',
  29. event: 'globalCursorTaken',
  30. update: 'update'
  31. }, function () {});
  32. exports.take = take;
  33. exports.release = release;
  34. exports.isTaken = isTaken;