CustomVisualizationsTab.js 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: Cognos Analytics
  5. * Copyright IBM Corp. 2019
  6. * US Government Users Restricted Rights - Use, duplication or disclosure
  7. * restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. define(['underscore', 'bacontentnav/lib/@waca/core-client/js/core-client/utils/DateTimeUtils', 'bacontentnav/utils/GlassContextHelper', 'bi/admin/nls/StringResource', 'bi/admin/common/Uploader', 'bi/admin/common/services/CustomVisualizationService', 'bi/glass/app/ContentView', 'bi/commons/utils/Downloader', 'react', 'react-dom', 'ba-react-admin/ba-react-admin.min'], function (_, DateTimeUtils, GlassContextHelper, StringResource, Uploader, CustomVisualizationService, View, Downloader, React, ReactDOM, AdminReact) {
  10. 'use strict'; //NOSONAR: meant to be strict
  11. var CustomVisualizationsTab = View.extend({
  12. init: function init(options) {
  13. CustomVisualizationsTab.inherited('init', this, arguments);
  14. _.extend(this, options);
  15. this.$el.addClass('CustomVisualizationTabView');
  16. this.$el.attr('id', 'caCustomVisualizationsTab');
  17. if (_.isUndefined(this.customVisualizationService)) {
  18. var cvOptions = {
  19. 'glassContext': this.glassContext
  20. };
  21. this.customVisualizationService = new CustomVisualizationService(cvOptions);
  22. }
  23. },
  24. remove: function remove() {
  25. this.cleanUpReact();
  26. },
  27. cleanUpReact: function cleanUpReact() {
  28. if (this.$el) {
  29. ReactDOM.unmountComponentAtNode(this.$el.find(".customVisualsListPaneRoot")[0]);
  30. }
  31. },
  32. formatDate: function formatDate(dateTime) {
  33. var date = DateTimeUtils.formatDate(dateTime, 'short', GlassContextHelper.getLocaleTime(this.glassContext)).toString();
  34. var time = DateTimeUtils.formatTime(dateTime, 'short', GlassContextHelper.getLocaleTime(this.glassContext)).toString();
  35. return {
  36. date: date,
  37. time: time
  38. };
  39. },
  40. render: function render() {
  41. var aRoot = this.$el.append("<div><div class='customVisualsListPaneRoot'></div></div>");
  42. var customVisualizationListView = React.createElement(AdminReact.CustomVisualizationListView, {
  43. glassContext: this.glassContext,
  44. StringResource: StringResource,
  45. parent: this
  46. });
  47. ReactDOM.render(customVisualizationListView, this.$el.find('.customVisualsListPaneRoot')[0]);
  48. return Promise.resolve(this);
  49. },
  50. _doUpdateUploadCustomVisualization: function _doUpdateUploadCustomVisualization(_ajaxOptions) {
  51. var uploader = new Uploader({
  52. '$el': this.$el,
  53. 'glassContext': this.glassContext,
  54. 'ajax': this.customVisualizationService.updateOrUpload.bind(this.customVisualizationService),
  55. 'ajaxOptions': _ajaxOptions
  56. });
  57. return uploader.doUpload();
  58. },
  59. /**
  60. * Prepares the uploader and calls for an upload, then refreshes the list of custom visualizations
  61. */
  62. uploadCustomVisualization: function uploadCustomVisualization() {
  63. return this._doUpdateUploadCustomVisualization({
  64. 'isUpload': true
  65. });
  66. },
  67. updateCustomVisualization: function updateCustomVisualization(objData) {
  68. return this._doUpdateUploadCustomVisualization({
  69. 'isUpload': false,
  70. 'id': objData.symbolicName
  71. });
  72. },
  73. downloadCustomVisualization: function downloadCustomVisualization(objData) {
  74. var name = objData.defaultName; // var url = this.customVisualizationService.getDownloadUrl(type, name) + '/zip';
  75. var url = 'v1/disp/repository/sid/cm/oid/' + objData.id + '/content';
  76. var downloader = new Downloader({
  77. 'url': url,
  78. 'name': name,
  79. 'logger': this.glassContext.appController.logger
  80. });
  81. return downloader.doDownload();
  82. }
  83. });
  84. return CustomVisualizationsTab;
  85. });