circular_range_container.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * DevExtreme (viz/gauges/circular_range_container.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var BaseRangeContainer = require("./base_range_container");
  11. var _Number = Number;
  12. var _max = Math.max;
  13. var _normalizeEnum = require("../core/utils").normalizeEnum;
  14. var CircularRangeContainer = BaseRangeContainer.inherit({
  15. _processOptions: function() {
  16. var that = this;
  17. that._inner = that._outer = 0;
  18. switch (_normalizeEnum(that._options.orientation)) {
  19. case "inside":
  20. that._inner = 1;
  21. break;
  22. case "center":
  23. that._inner = that._outer = .5;
  24. break;
  25. default:
  26. that._outer = 1
  27. }
  28. },
  29. _isVisible: function(layout) {
  30. var width = this._options.width;
  31. width = _Number(width) || _max(_Number(width.start), _Number(width.end));
  32. return layout.radius - this._inner * width > 0
  33. },
  34. _createRange: function(range, layout) {
  35. var that = this;
  36. var width = (range.startWidth + range.endWidth) / 2;
  37. return that._renderer.arc(layout.x, layout.y, layout.radius - that._inner * width, layout.radius + that._outer * width, that._translator.translate(range.end), that._translator.translate(range.start)).attr({
  38. "stroke-linejoin": "round"
  39. })
  40. },
  41. measure: function(layout) {
  42. var width = this._options.width;
  43. width = _Number(width) || _max(_Number(width.start), _Number(width.end));
  44. return {
  45. min: layout.radius - this._inner * width,
  46. max: layout.radius + this._outer * width
  47. }
  48. }
  49. });
  50. module.exports = CircularRangeContainer;