GridDOMProvider.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. 'use strict';
  2. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3. /*
  4. * Licensed Materials - Property of IBM
  5. * IBM Business Analytics (C) Copyright IBM Corp. 2020
  6. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. */
  8. /**
  9. * @class GridDOMProvider
  10. * @hideconstructor
  11. * @classdesc Implements DOMProviderAPI
  12. */
  13. define(['jquery', './api/DOMProviderAPI', '../../../../lib/@waca/dashboard-common/dist/core/APIFactory'], function ($, DomProviderAPI, APIFactory) {
  14. var GridDOMProvider = function () {
  15. function GridDOMProvider(options) {
  16. _classCallCheck(this, GridDOMProvider);
  17. this._domNode = options.features.ContentViewDOM.getNode();
  18. this.liveWidgetDOM = options.features.LiveWidgetDOM;
  19. this.visualization = options.features.Visualization;
  20. var type = this.visualization.getType();
  21. if (type === 'Crosstab') {
  22. this.liveWidgetDOM.registerProvider(this.getAPI());
  23. }
  24. }
  25. GridDOMProvider.prototype.getAPI = function getAPI() {
  26. if (!this._api) {
  27. this._api = APIFactory.createAPI(this, [DomProviderAPI]);
  28. }
  29. return this._api;
  30. };
  31. /**
  32. * @implements DomProviderAPI.getUIJSON
  33. */
  34. GridDOMProvider.prototype.getUIJSON = function getUIJSON() {
  35. var cols = [];
  36. $(this._domNode).find('.grid-fixed-row-cell, .top-left-grid-cell').each(function (idx, col) {
  37. var $colHeader = $(col);
  38. cols.push({
  39. value: $colHeader.text(),
  40. useValue: $colHeader.attr('useValue') && $colHeader.attr('useValue').split('->'),
  41. color: $colHeader.css('color'),
  42. row: Number($colHeader.attr('row')),
  43. col: Number($colHeader.attr('col')),
  44. isMeasure: $colHeader.attr('measure') === 'true',
  45. isSummary: $colHeader.hasClass('summary')
  46. });
  47. });
  48. var rows = [];
  49. $(this._domNode).find('.grid-fixed-column-cell').each(function (idx, row) {
  50. var $rowHeader = $(row);
  51. rows.push({
  52. value: $rowHeader.text(),
  53. useValue: $rowHeader.attr('useValue').split('->'),
  54. color: $rowHeader.css('color'),
  55. row: Number($rowHeader.attr('row')),
  56. col: Number($rowHeader.attr('col')),
  57. isMeasure: $rowHeader.attr('measure') === 'true',
  58. isSummary: $rowHeader.hasClass('summary')
  59. });
  60. });
  61. var values = [];
  62. $(this._domNode).find('.grid-data-cell').each(function (idx, cell) {
  63. var $cell = $(cell);
  64. var $shape = $cell.find('svg > use');
  65. var backgroundColor = $cell.css('background-color');
  66. var backgroundColorTokens = backgroundColor.split(',');
  67. values.push({
  68. value: $cell.text(),
  69. tuple: $cell.attr('tuple').split('->'),
  70. color: $cell.css('color'),
  71. 'background-color': backgroundColor,
  72. shape: $shape.attr('xlink:href'),
  73. row: Number($cell.attr('row')),
  74. col: Number($cell.attr('col')),
  75. isSummary: $cell.hasClass('summary'),
  76. opacity: parseFloat(backgroundColorTokens[backgroundColorTokens.length - 1].split(')')[0])
  77. });
  78. });
  79. return {
  80. cols: cols,
  81. rows: rows,
  82. values: values
  83. };
  84. };
  85. return GridDOMProvider;
  86. }();
  87. return GridDOMProvider;
  88. });
  89. //# sourceMappingURL=GridDOMProvider.js.map