ui.pivot_grid.fields_area.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /**
  2. * DevExtreme (ui/pivot_grid/ui.pivot_grid.fields_area.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 _renderer = require("../../core/renderer");
  11. var _renderer2 = _interopRequireDefault(_renderer);
  12. var _common = require("../../core/utils/common");
  13. var _iterator = require("../../core/utils/iterator");
  14. var _uiPivot_grid = require("./ui.pivot_grid.area_item");
  15. var _uiPivot_grid2 = require("./ui.pivot_grid.utils");
  16. var _popup = require("../popup");
  17. var _popup2 = _interopRequireDefault(_popup);
  18. var _button = require("../button");
  19. var _button2 = _interopRequireDefault(_button);
  20. require("./ui.pivot_grid.field_chooser_base");
  21. function _interopRequireDefault(obj) {
  22. return obj && obj.__esModule ? obj : {
  23. "default": obj
  24. }
  25. }
  26. var DIV = "<div>";
  27. var AREA_DRAG_CLASS = "dx-pivotgrid-drag-action";
  28. function renderGroupConnector(field, nextField, prevField, $container) {
  29. if (prevField && prevField.groupName && prevField.groupName === field.groupName) {
  30. (0, _renderer2.default)(DIV).addClass("dx-group-connector").addClass("dx-group-connector-prev").appendTo($container)
  31. }
  32. if (nextField && nextField.groupName && nextField.groupName === field.groupName) {
  33. (0, _renderer2.default)(DIV).addClass("dx-group-connector").addClass("dx-group-connector-next").appendTo($container)
  34. }
  35. }
  36. exports.FieldsArea = _uiPivot_grid.AreaItem.inherit({
  37. ctor: function(component, area) {
  38. this.callBase(component);
  39. this._area = area
  40. },
  41. _getAreaName: function() {
  42. return "fields"
  43. },
  44. _createGroupElement: function() {
  45. return (0, _renderer2.default)(DIV).addClass("dx-pivotgrid-fields-area").addClass("dx-area-fields").addClass(AREA_DRAG_CLASS).attr("group", this._area)
  46. },
  47. isVisible: function() {
  48. return !!this.option("fieldPanel.visible") && this.option("fieldPanel.show" + (0, _uiPivot_grid2.capitalizeFirstLetter)(this._area) + "Fields")
  49. },
  50. _renderButton: function(element) {
  51. var that = this;
  52. var container = (0, _renderer2.default)("<td>").appendTo((0, _renderer2.default)("<tr>").appendTo(element));
  53. var button = that.component._createComponent((0, _renderer2.default)(DIV).appendTo(container), _button2.default, {
  54. text: "Fields",
  55. icon: "menu",
  56. width: "auto",
  57. onClick: function() {
  58. var popup = that.tableElement().find(".dx-fields-area-popup").dxPopup("instance");
  59. if (!popup.option("visible")) {
  60. popup.show()
  61. }
  62. }
  63. });
  64. button.$element().addClass("dx-pivotgrid-fields-area-hamburger")
  65. },
  66. _getPopupOptions: function(row, button) {
  67. return {
  68. contentTemplate: function() {
  69. return (0, _renderer2.default)("<table>").addClass("dx-area-field-container").append((0, _renderer2.default)("<thead>").addClass("dx-pivotgrid-fields-area-head").append(row))
  70. },
  71. height: "auto",
  72. width: "auto",
  73. position: {
  74. at: "left",
  75. my: "left",
  76. of: button
  77. },
  78. dragEnabled: false,
  79. animation: {
  80. show: {
  81. type: "pop",
  82. duration: 200
  83. }
  84. },
  85. shading: false,
  86. showTitle: false,
  87. closeOnOutsideClick: true,
  88. container: button.parent()
  89. }
  90. },
  91. _renderPopup: function(tableElement, row) {
  92. var that = this;
  93. var button = tableElement.find(".dx-button");
  94. var popupOptions = that._getPopupOptions(row, button);
  95. var FieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase("instance");
  96. if (that._rowPopup) {
  97. that._rowPopup.$element().remove()
  98. }
  99. that._rowPopup = that.component._createComponent((0, _renderer2.default)(DIV).appendTo(tableElement), _popup2.default, popupOptions);
  100. that._rowPopup.$element().addClass("dx-fields-area-popup");
  101. that._rowPopup.content().addClass("dx-pivotgrid-fields-container");
  102. that._rowPopup.content().parent().attr("group", "row");
  103. FieldChooserBase.subscribeToEvents(that._rowPopup.content());
  104. FieldChooserBase.renderSortable(that._rowPopup.content())
  105. },
  106. _shouldCreateButton: function() {
  107. return false
  108. },
  109. _renderTableContent: function(tableElement, data) {
  110. var that = this;
  111. var groupElement = this.groupElement();
  112. var isVisible = this.isVisible();
  113. var fieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase("instance");
  114. var head = (0, _renderer2.default)("<thead>").addClass("dx-pivotgrid-fields-area-head").appendTo(tableElement);
  115. var area = that._area;
  116. var row = (0, _renderer2.default)("<tr>");
  117. groupElement.toggleClass("dx-hidden", !isVisible);
  118. tableElement.addClass("dx-area-field-container");
  119. if (!isVisible) {
  120. return
  121. }(0, _iterator.each)(data, function(index, field) {
  122. if (field.area === area && false !== field.visible) {
  123. var td = (0, _renderer2.default)("<td>").append(fieldChooserBase.renderField(field, "row" === field.area));
  124. var indicators = td.find(".dx-column-indicators");
  125. if (indicators.length && that._shouldCreateButton()) {
  126. indicators.insertAfter(indicators.next())
  127. }
  128. td.appendTo(row);
  129. renderGroupConnector(field, data[index + 1], data[index - 1], td)
  130. }
  131. });
  132. if (!row.children().length) {
  133. (0, _renderer2.default)("<td>").append((0, _renderer2.default)(DIV).addClass("dx-empty-area-text").text(this.option("fieldPanel.texts." + area + "FieldArea"))).appendTo(row)
  134. }
  135. if (that._shouldCreateButton()) {
  136. that._renderButton(head);
  137. that._renderPopup(tableElement, row)
  138. } else {
  139. head.append(row)
  140. }
  141. },
  142. reset: function() {
  143. this.callBase();
  144. this.groupElement().css("marginTop", 0)
  145. },
  146. _renderVirtualContent: _common.noop
  147. });