UploadActionHandler.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /*
  2. * Licensed Materials - Property of IBM
  3. *
  4. * IBM Cognos Products: Modeling UI
  5. *
  6. * Copyright IBM Corp. 2017, 2021
  7. *
  8. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  9. */
  10. define(
  11. ['bi/glass/core/Class', '../StringResourcesBridge', '../FileUploadBridge'],
  12. function (BaseClass, Resources, FileUploader) {
  13. var fileUploader;
  14. var APPEND_ITEM_ID = 'com.ibm.bi.ca-uploadModeller.ca-modeller-glass-upload-append' ;
  15. var UploadActionHandler = BaseClass.extend({
  16. init: function () {
  17. UploadActionHandler.inherited('init', this, arguments);
  18. },
  19. initialize: function(context) {
  20. var providers = context.controllerConfig && context.controllerConfig.providers;
  21. if (!fileUploader) {
  22. fileUploader = new FileUploader(context.glassContext);
  23. fileUploader.render({ providers: providers });
  24. }
  25. },
  26. _isSupported: function (application) {
  27. if (!window.File) {
  28. application.showErrorMessage(Resources.get('errorHTML5Support') + '(1)');
  29. return false;
  30. } else if (!window.FileReader) {
  31. application.showErrorMessage(Resources.get('errorHTML5Support') + '(2)');
  32. return false;
  33. } else if (!window.FileList) {
  34. application.showErrorMessage(Resources.get('errorHTML5Support') + '(3)');
  35. return false;
  36. } else if (!window.Blob) {
  37. application.showErrorMessage(Resources.get('errorHTML5Support') + '(4)');
  38. return false;
  39. } else if (/^((?!chrome).)*safari\/537/i.test(navigator.userAgent)) {
  40. // safari 8 not good
  41. application.showErrorMessage(Resources.get('errorUploadSupport'));
  42. return false;
  43. }
  44. return true;
  45. },
  46. // #onSelectItem for Upload or refresh button
  47. onSelectItem: function (context) {
  48. if (this._isSupported(context.glassContext)) {
  49. // fileUploadId
  50. var fileUploadId = null;
  51. var isAppend = false;
  52. // moser needs destination to be undefined as default
  53. var folderName = undefined;
  54. if (context.target.activeObject) {
  55. fileUploadId = context.target.activeObject.aSelectedContext[0].id;
  56. ancestors = context.target.activeObject.aSelectedContext[0].ancestors
  57. // https://jsw.ibm.com/browse/MUI-1256
  58. folderName = (ancestors && ancestors.length > 0) ? ancestors[ancestors.length -1].defaultName : undefined;
  59. if (context.target.itemId === APPEND_ITEM_ID) {
  60. isAppend = true;
  61. }
  62. }
  63. fileUploader.showFilePicker(fileUploadId, null, isAppend, { destination: folderName });
  64. }
  65. },
  66. isItemVisible: function (context) {
  67. if (!context.target.activeObject) {
  68. // Show in the Create New menu
  69. return true;
  70. }
  71. var obj = context.target.activeObject.aSelectedContext[0];
  72. var singleSelect = context.target.activeObject.aSelectedContext.length === 1;
  73. var visible =
  74. singleSelect &&
  75. obj.type === 'uploadedFile' &&
  76. _.indexOf(obj.permissions, 'write') > -1;
  77. if (obj.extensions && obj.extensions.refresh === false) {
  78. visible = false;
  79. }
  80. return visible;
  81. }
  82. });
  83. return UploadActionHandler;
  84. }
  85. );