QueryDefinitionModifier.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 Cognos Products: BI Cloud (C) Copyright IBM Corp. 2019, 2020
  6. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. */
  8. define(['../../../lib/@waca/dashboard-common/dist/core/APIFactory', './api/QueryDefinitionModifierAPI', './DataQueryUtils'], function (APIFactory, QueryDefinitionModifierAPI, DataQueryUtils) {
  9. var QueryDefinitionModifier = function () {
  10. function QueryDefinitionModifier(_ref) {
  11. var content = _ref.content,
  12. dashboardAPI = _ref.dashboardAPI;
  13. _classCallCheck(this, QueryDefinitionModifier);
  14. this.content = content;
  15. this.dashboard = dashboardAPI;
  16. this.content.getFeature('DataQueryExecution').registerQueryDefinitionModifier(this.getAPI());
  17. }
  18. QueryDefinitionModifier.prototype.getAPI = function getAPI() {
  19. if (!this.api) {
  20. this.api = APIFactory.createAPI(this, [QueryDefinitionModifierAPI]);
  21. }
  22. return this.api;
  23. };
  24. QueryDefinitionModifier.prototype.getType = function getType() {
  25. return 'main';
  26. };
  27. QueryDefinitionModifier.prototype.modifyQueryDefinitionList = function modifyQueryDefinitionList(definitions) {
  28. var visualization = this.content.getFeature('Visualization');
  29. var filterSpecList = DataQueryUtils.getFilterSpecListByVisualization(this.content, this.dashboard);
  30. var updatedFilterSpecList = DataQueryUtils.convertExcludeEmptyValuesFilters(filterSpecList, visualization.getDataSource());
  31. var preferredModelItems = DataQueryUtils.getRelatedModelItemsForQueryHint(this.content, this.dashboard);
  32. var refreshProperty = this.content.getPropertyValue('queryRefresh');
  33. for (var i = 0; i < definitions.length; i++) {
  34. var definition = definitions[i];
  35. definition.addFilters(updatedFilterSpecList);
  36. this._modifyQueryHints(definition, preferredModelItems, refreshProperty);
  37. }
  38. return definitions;
  39. };
  40. QueryDefinitionModifier.prototype._modifyQueryHints = function _modifyQueryHints(definition, preferredModelItems, refreshProperty) {
  41. if (!preferredModelItems) {
  42. preferredModelItems = DataQueryUtils.getRelatedModelItemsForQueryHint(this.content, this.dashboard);
  43. }
  44. if (preferredModelItems.length) {
  45. definition.addQueryHint({
  46. key: 'preferredModelItems',
  47. spec: {
  48. preferredModelItems: preferredModelItems
  49. }
  50. });
  51. }
  52. if (!refreshProperty) {
  53. refreshProperty = this.content.getPropertyValue('queryRefresh');
  54. }
  55. if (!(refreshProperty && refreshProperty.autoRefresh)) {
  56. var dataCache = this.dashboard.getCanvas().getPropertyValue('dataCache');
  57. if (dataCache !== 'automatic') {
  58. definition.addQueryHint({
  59. key: 'dataCacheExpiry',
  60. spec: {
  61. dataCacheExpiry: dataCache === 'yes' ? '3600' : '0'
  62. }
  63. });
  64. }
  65. } else {
  66. definition.addQueryHint({
  67. key: 'autoRefreshTime',
  68. spec: {
  69. autoRefreshTime: '' + Date.now()
  70. }
  71. });
  72. }
  73. };
  74. return QueryDefinitionModifier;
  75. }();
  76. return QueryDefinitionModifier;
  77. });
  78. //# sourceMappingURL=QueryDefinitionModifier.js.map