Browse Source

HUE-8963 [frontend] Prevent leaking viewModel in the global js scope

Johan Ahlen 6 years ago
parent
commit
cad67da615

+ 33 - 33
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -729,7 +729,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
 
 
               if (destpath) {
               if (destpath) {
                 $('#moveDestination').val(destpath);
                 $('#moveDestination').val(destpath);
-                viewModel.move('nomodal', _dragged);
+                fileBrowserViewModel.move('nomodal', _dragged);
               }
               }
             }
             }
           };
           };
@@ -764,8 +764,8 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
     };
     };
 
 
     var fileExists = function (newName) {
     var fileExists = function (newName) {
-      if (viewModel) {
-        var files = viewModel.files();
+      if (fileBrowserViewModel) {
+        var files = fileBrowserViewModel.files();
         for (var i = 0; i < files.length; i++) {
         for (var i = 0; i < files.length; i++) {
           if (files[i].name == newName) {
           if (files[i].name == newName) {
             return true;
             return true;
@@ -850,7 +850,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
         isBucket: ko.pureComputed(function(){
         isBucket: ko.pureComputed(function(){
           return file.path.toLowerCase().indexOf('s3a://') == 0 && file.path.substr(6).indexOf('/') == -1
           return file.path.toLowerCase().indexOf('s3a://') == 0 && file.path.substr(6).indexOf('/') == -1
         }),
         }),
-        selected: ko.observable(file.highlighted && viewModel.isArchive(file.name) || false),
+        selected: ko.observable(file.highlighted && fileBrowserViewModel.isArchive(file.name) || false),
         highlighted: ko.observable(file.highlighted || false),
         highlighted: ko.observable(file.highlighted || false),
         deleted: ko.observable(file.deleted || false),
         deleted: ko.observable(file.deleted || false),
         handleSelect: function (row, e) {
         handleSelect: function (row, e) {
@@ -862,7 +862,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
           }
           }
           this.highlighted(false);
           this.highlighted(false);
           this.deleted(false);
           this.deleted(false);
-          viewModel.allSelected(false);
+          fileBrowserViewModel.allSelected(false);
         },
         },
         // display the context menu when an item is right/context clicked
         // display the context menu when an item is right/context clicked
         showContextMenu: function (row, e) {
         showContextMenu: function (row, e) {
@@ -912,8 +912,8 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
                 this.url = "/";
                 this.url = "/";
               }
               }
 
 
-              viewModel.targetPageNum(1);
-              viewModel.targetPath("${url('filebrowser.views.view', path='')}" + stripHashes(this.url));
+              fileBrowserViewModel.targetPageNum(1);
+              fileBrowserViewModel.targetPath("${url('filebrowser.views.view', path='')}" + stripHashes(this.url));
               updateHash(this.url);
               updateHash(this.url);
             }
             }
             else {
             else {
@@ -1317,10 +1317,10 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
           if (! (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey)) {
           if (! (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey)) {
             e.stopPropagation();
             e.stopPropagation();
             e.preventDefault();
             e.preventDefault();
-            viewModel.targetPageNum(1);
-            viewModel.targetPath("${url('filebrowser.views.view', path='')}?" + folderPath);
+            fileBrowserViewModel.targetPageNum(1);
+            fileBrowserViewModel.targetPath("${url('filebrowser.views.view', path='')}?" + folderPath);
             updateHash('');
             updateHash('');
-            viewModel.retrieveData();
+            fileBrowserViewModel.retrieveData();
           }
           }
           else {
           else {
             window.open("${url('filebrowser.views.view', path='')}?" + folderPath);
             window.open("${url('filebrowser.views.view', path='')}?" + folderPath);
@@ -1896,7 +1896,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
 
 
         hiddenFields($("#purgeTrashForm"), 'path', paths);
         hiddenFields($("#purgeTrashForm"), 'path', paths);
 
 
-        $("#purgeTrashForm").attr("action", "/filebrowser/trash/purge?next=${url('filebrowser.views.view', path='')}" + viewModel.homeDir() + "/.Trash");
+        $("#purgeTrashForm").attr("action", "/filebrowser/trash/purge?next=${url('filebrowser.views.view', path='')}" + fileBrowserViewModel.homeDir() + "/.Trash");
 
 
         $("#purgeTrashModal").modal({
         $("#purgeTrashModal").modal({
           keyboard:true,
           keyboard:true,
@@ -2014,8 +2014,8 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
       }
       }
     };
     };
 
 
-    var viewModel = new FileBrowserModel([], null, [], "/");
-    ko.applyBindings(viewModel, $('.filebrowser')[0]);
+    var fileBrowserViewModel = new FileBrowserModel([], null, [], "/");
+    ko.applyBindings(fileBrowserViewModel, $('.filebrowser')[0]);
 
 
     $(document).ready(function () {
     $(document).ready(function () {
       // hide context menu
       // hide context menu
@@ -2062,7 +2062,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
         $('.filebrowser').on('dragenter', function (e) {
         $('.filebrowser').on('dragenter', function (e) {
           e.preventDefault();
           e.preventDefault();
 
 
-          if (_isExternalFile && !($("#uploadFileModal").is(":visible")) && (!viewModel.isS3() || (viewModel.isS3() && !viewModel.isS3Root()))) {
+          if (_isExternalFile && !($("#uploadFileModal").is(":visible")) && (!fileBrowserViewModel.isS3() || (fileBrowserViewModel.isS3() && !fileBrowserViewModel.isS3Root()))) {
             showHoverMsg("${_('Drop files here to upload')}");
             showHoverMsg("${_('Drop files here to upload')}");
           }
           }
         });
         });
@@ -2156,7 +2156,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
                     $(document).trigger('error', response.data);
                     $(document).trigger('error', response.data);
                   } else {
                   } else {
                     $(document).trigger('info', response.path + ' ' + I18n('uploaded successfully'));
                     $(document).trigger('info', response.path + ' ' + I18n('uploaded successfully'));
-                    viewModel.filesToHighlight.push(response.path);
+                    fileBrowserViewModel.filesToHighlight.push(response.path);
                   }
                   }
                 }
                 }
               }
               }
@@ -2170,7 +2170,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
                     $('#progressStatus').addClass('hide');
                     $('#progressStatus').addClass('hide');
                     $('#progressStatusBar').addClass('hide');
                     $('#progressStatusBar').addClass('hide');
                     $('#progressStatusBar div').css("width", "0");
                     $('#progressStatusBar div').css("width", "0");
-                    viewModel.retrieveData(true);
+                    fileBrowserViewModel.retrieveData(true);
                   },
                   },
                   2500);
                   2500);
             });
             });
@@ -2282,7 +2282,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
           return false;
           return false;
         }
         }
         var isMoveOnSelf = false;
         var isMoveOnSelf = false;
-        $(viewModel.selectedFiles()).each(function (index, file) {
+        $(fileBrowserViewModel.selectedFiles()).each(function (index, file) {
           if (file.path == $('#moveDestination').val()) {
           if (file.path == $('#moveDestination').val()) {
             isMoveOnSelf = true;
             isMoveOnSelf = true;
             return false;
             return false;
@@ -2316,9 +2316,9 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
         $("#newRepFactorInput").removeClass("fieldError");
         $("#newRepFactorInput").removeClass("fieldError");
       });
       });
 
 
-      huePubSub.subscribe('fb.' + viewModel.fs() + '.refresh', function (path) {
-        if (path === viewModel.currentPath()) {
-          viewModel.retrieveData();
+      huePubSub.subscribe('fb.' + fileBrowserViewModel.fs() + '.refresh', function (path) {
+        if (path === fileBrowserViewModel.currentPath()) {
+          fileBrowserViewModel.retrieveData();
         }
         }
       }, 'filebrowser');
       }, 'filebrowser');
 
 
@@ -2330,8 +2330,8 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
           onEnter: function (el) {
           onEnter: function (el) {
             $("#jHueHdfsAutocomplete").hide();
             $("#jHueHdfsAutocomplete").hide();
           },
           },
-          isS3: viewModel.isS3(),
-          root: viewModel.rootCurrent()
+          isS3: fileBrowserViewModel.isS3(),
+          root: fileBrowserViewModel.rootCurrent()
         });
         });
         $("#copyDestination").jHueHdfsAutocomplete({
         $("#copyDestination").jHueHdfsAutocomplete({
           showOnFocus: true,
           showOnFocus: true,
@@ -2340,8 +2340,8 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
           onEnter: function (el) {
           onEnter: function (el) {
             $("#jHueHdfsAutocomplete").hide();
             $("#jHueHdfsAutocomplete").hide();
           },
           },
-          isS3: viewModel.isS3(),
-          root: viewModel.rootCurrent()
+          isS3: fileBrowserViewModel.isS3(),
+          root: fileBrowserViewModel.rootCurrent()
         });
         });
       });
       });
 
 
@@ -2430,17 +2430,17 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
               targetPath += stripHashes(encodeURIComponent(hash));
               targetPath += stripHashes(encodeURIComponent(hash));
             }
             }
             else {
             else {
-              targetPath = viewModel.targetPath() + encodeURI(hash);
+              targetPath = fileBrowserViewModel.targetPath() + encodeURI(hash);
             }
             }
-            viewModel.targetPageNum(1)
+            fileBrowserViewModel.targetPageNum(1)
           }
           }
           if (window.location.href.indexOf("#") == -1) {
           if (window.location.href.indexOf("#") == -1) {
-            viewModel.targetPageNum(1);
+            fileBrowserViewModel.targetPageNum(1);
             targetPath = "${current_request_path | n,unicode }";
             targetPath = "${current_request_path | n,unicode }";
           }
           }
           if (targetPath != "") {
           if (targetPath != "") {
-            viewModel.targetPath(targetPath);
-            viewModel.retrieveData();
+            fileBrowserViewModel.targetPath(targetPath);
+            fileBrowserViewModel.retrieveData();
           }
           }
         }
         }
       }
       }
@@ -2451,7 +2451,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
         hashchange();
         hashchange();
       }
       }
       else {
       else {
-        viewModel.retrieveData();
+        fileBrowserViewModel.retrieveData();
       }
       }
 
 
 
 
@@ -2465,11 +2465,11 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
 
 
       $("#hueBreadcrumbText").jHueHdfsAutocomplete({
       $("#hueBreadcrumbText").jHueHdfsAutocomplete({
         home: "/user/${ user }/",
         home: "/user/${ user }/",
-        root: viewModel.rootTarget(),
+        root: fileBrowserViewModel.rootTarget(),
         skipKeydownEvents: true,
         skipKeydownEvents: true,
         onEnter: function (el) {
         onEnter: function (el) {
-          viewModel.targetPath("${url('filebrowser.views.view', path='')}" + stripHashes(el.val()));
-          viewModel.getStats(function (data) {
+          fileBrowserViewModel.targetPath("${url('filebrowser.views.view', path='')}" + stripHashes(el.val()));
+          fileBrowserViewModel.getStats(function (data) {
             if (data.type != null && data.type == "file") {
             if (data.type != null && data.type == "file") {
               %if is_embeddable:
               %if is_embeddable:
               huePubSub.publish('open.link', data.url);
               huePubSub.publish('open.link', data.url);

+ 31 - 31
apps/oozie/src/oozie/templates/editor2/workflow_editor.mako

@@ -622,8 +622,8 @@ ${ utils.submit_popup_event() }
 
 
   var apiHelper = window.apiHelper;
   var apiHelper = window.apiHelper;
 
 
-  var viewModel = new WorkflowEditorViewModel(${ layout_json | n,unicode }, ${ workflow_json | n,unicode }, ${ credentials_json | n,unicode }, ${ workflow_properties_json | n,unicode }, ${ subworkflows_json | n,unicode }, ${ can_edit_json | n,unicode });
-  ko.applyBindings(viewModel, $("#oozie_workflowComponents")[0]);
+  var workflowEditorViewModel = new WorkflowEditorViewModel(${ layout_json | n,unicode }, ${ workflow_json | n,unicode }, ${ credentials_json | n,unicode }, ${ workflow_properties_json | n,unicode }, ${ subworkflows_json | n,unicode }, ${ can_edit_json | n,unicode });
+  ko.applyBindings(workflowEditorViewModel, $("#oozie_workflowComponents")[0]);
 
 
   % if not is_embeddable:
   % if not is_embeddable:
   var shareViewModel = initSharing("#documentShareModal");
   var shareViewModel = initSharing("#documentShareModal");
@@ -637,10 +637,10 @@ ${ utils.submit_popup_event() }
   var defaultSection = 'actions';
   var defaultSection = 'actions';
   % endif
   % endif
 
 
-  viewModel.currentDraggableSection(defaultSection);
+  workflowEditorViewModel.currentDraggableSection(defaultSection);
 
 
-  viewModel.init();
-  fullLayout(viewModel);
+  workflowEditorViewModel.init();
+  fullLayout(workflowEditorViewModel);
 
 
   var globalFilechooserOptions = {
   var globalFilechooserOptions = {
     skipInitialPathIfEmpty: true,
     skipInitialPathIfEmpty: true,
@@ -650,9 +650,9 @@ ${ utils.submit_popup_event() }
     extraHomeProperties: {
     extraHomeProperties: {
       label: '${ _('Workspace') }',
       label: '${ _('Workspace') }',
       icon: 'fa-folder-open',
       icon: 'fa-folder-open',
-      path: viewModel.workflow.properties.deployment_dir()
+      path: workflowEditorViewModel.workflow.properties.deployment_dir()
     },
     },
-    deploymentDir: viewModel.workflow.properties.deployment_dir()
+    deploymentDir: workflowEditorViewModel.workflow.properties.deployment_dir()
   }
   }
 
 
   function columnDropAdditionalHandler(widget) {
   function columnDropAdditionalHandler(widget) {
@@ -661,25 +661,25 @@ ${ utils.submit_popup_event() }
 
 
   function widgetDraggedAdditionalHandler(widget) {
   function widgetDraggedAdditionalHandler(widget) {
     $("canvas").remove();
     $("canvas").remove();
-    if (viewModel.currentlyDraggedWidget() && viewModel.currentlyDraggedWidget().id() == ""){
-      viewModel.workflow.newNode(widget, function() {
+    if (workflowEditorViewModel.currentlyDraggedWidget() && workflowEditorViewModel.currentlyDraggedWidget().id() == ""){
+      workflowEditorViewModel.workflow.newNode(widget, function() {
         showAddActionDemiModal(widget);
         showAddActionDemiModal(widget);
       });
       });
     }
     }
     else {
     else {
-      if (viewModel.currentlyDraggedOp() == "move"){
-        viewModel.workflow.moveNode(widget);
+      if (workflowEditorViewModel.currentlyDraggedOp() == "move"){
+        workflowEditorViewModel.workflow.moveNode(widget);
       }
       }
       else { // Copy
       else { // Copy
-        var _sourceNode = viewModel.workflow.getNodeById(viewModel.currentlyDraggedWidget().id());
-        viewModel.workflow.newNode(widget, viewModel.workflow.addNode, _sourceNode);
+        var _sourceNode = workflowEditorViewModel.workflow.getNodeById(workflowEditorViewModel.currentlyDraggedWidget().id());
+        workflowEditorViewModel.workflow.newNode(widget, workflowEditorViewModel.workflow.addNode, _sourceNode);
       }
       }
       $(document).trigger("drawArrows");
       $(document).trigger("drawArrows");
     }
     }
   }
   }
 
 
   function showAddActionDemiModal(widget) {
   function showAddActionDemiModal(widget) {
-    viewModel.newAction(widget);
+    workflowEditorViewModel.newAction(widget);
     $("#exposeOverlay").fadeIn(300);
     $("#exposeOverlay").fadeIn(300);
     var _el = $("#wdg_" + widget.id());
     var _el = $("#wdg_" + widget.id());
     _el.css("zIndex", "1032");
     _el.css("zIndex", "1032");
@@ -708,25 +708,25 @@ ${ utils.submit_popup_event() }
   }
   }
 
 
   function addActionDemiModalFieldPreview(field) {
   function addActionDemiModalFieldPreview(field) {
-    if (viewModel.newAction() != null) {
-      var _el = $("#wdg_" + viewModel.newAction().id());
+    if (workflowEditorViewModel.newAction() != null) {
+      var _el = $("#wdg_" + workflowEditorViewModel.newAction().id());
       _el.css("position", "static");
       _el.css("position", "static");
       _el.css("width", "");
       _el.css("width", "");
-      viewModel.workflow.addNode(viewModel.newAction());
+      workflowEditorViewModel.workflow.addNode(workflowEditorViewModel.newAction());
       $("#addActionDemiModal").modal("hide");
       $("#addActionDemiModal").modal("hide");
-      $("#wdg_" + viewModel.newAction().id()).css("zIndex", "0");
+      $("#wdg_" + workflowEditorViewModel.newAction().id()).css("zIndex", "0");
       $("#exposeOverlay").fadeOut(300);
       $("#exposeOverlay").fadeOut(300);
-      viewModel.newAction(null);
+      workflowEditorViewModel.newAction(null);
     }
     }
   }
   }
 
 
   function addActionDemiModalFieldCancel() {
   function addActionDemiModalFieldCancel() {
     $("#exposeOverlay").fadeOut(300);
     $("#exposeOverlay").fadeOut(300);
     $("#addActionDemiModal").modal("hide");
     $("#addActionDemiModal").modal("hide");
-    if (viewModel.newAction()){
-      viewModel.removeWidgetById(viewModel.newAction().id());
+    if (workflowEditorViewModel.newAction()){
+      workflowEditorViewModel.removeWidgetById(workflowEditorViewModel.newAction().id());
     }
     }
-    viewModel.newAction(null);
+    workflowEditorViewModel.newAction(null);
   }
   }
 
 
   function resizeDrops() {
   function resizeDrops() {
@@ -741,8 +741,8 @@ ${ utils.submit_popup_event() }
 
 
   function renderChangeables() {
   function renderChangeables() {
     resizeDrops();
     resizeDrops();
-    if (viewModel.workflow && viewModel.workflow.properties && viewModel.workflow.properties.show_arrows()){
-      viewModel.drawArrows();
+    if (workflowEditorViewModel.workflow && workflowEditorViewModel.workflow.properties && workflowEditorViewModel.workflow.properties.show_arrows()){
+      workflowEditorViewModel.drawArrows();
     }
     }
     $("#oozie_workflowComponents .widget-main-section").removeClass("zoom-in");
     $("#oozie_workflowComponents .widget-main-section").removeClass("zoom-in");
     $("#oozie_workflowComponents .widget-main-section").each(function(){
     $("#oozie_workflowComponents .widget-main-section").each(function(){
@@ -767,7 +767,7 @@ ${ utils.submit_popup_event() }
         _el.css("z-index", "1032");
         _el.css("z-index", "1032");
         lastSeenPosition = _el.position();
         lastSeenPosition = _el.position();
         var _width = _el.width();
         var _width = _el.width();
-        _el.parent().css("height", viewModel.isEditing() ? _el.height() : (_el.height() + 17) + "px");
+        _el.parent().css("height", workflowEditorViewModel.isEditing() ? _el.height() : (_el.height() + 17) + "px");
         _el.css("position", "absolute");
         _el.css("position", "absolute");
         _el.css({
         _el.css({
           "width": _width,
           "width": _width,
@@ -802,11 +802,11 @@ ${ utils.submit_popup_event() }
 
 
   function validateAndSave() {
   function validateAndSave() {
     validateFields();
     validateFields();
-    if (viewModel.isInvalid() && viewModel.isEditing()) {
+    if (workflowEditorViewModel.isInvalid() && workflowEditorViewModel.isEditing()) {
       var $firstElWithErrors = $("[validate].with-errors").eq(0);
       var $firstElWithErrors = $("[validate].with-errors").eq(0);
       if (!$firstElWithErrors.is(":visible")) {
       if (!$firstElWithErrors.is(":visible")) {
         var widgetId = $firstElWithErrors.parents(".card-widget").attr("id").substr(4);
         var widgetId = $firstElWithErrors.parents(".card-widget").attr("id").substr(4);
-        viewModel.getWidgetById(widgetId).ooziePropertiesExpanded(true);
+        workflowEditorViewModel.getWidgetById(widgetId).ooziePropertiesExpanded(true);
       }
       }
       window.setTimeout(function () {
       window.setTimeout(function () {
         $("html,body").animate({
         $("html,body").animate({
@@ -815,7 +815,7 @@ ${ utils.submit_popup_event() }
       }, 200);
       }, 200);
     }
     }
 
 
-    viewModel.save();
+    workflowEditorViewModel.save();
   }
   }
 
 
   function validateFields() {
   function validateFields() {
@@ -833,7 +833,7 @@ ${ utils.submit_popup_event() }
         $(this).removeClass("with-errors");
         $(this).removeClass("with-errors");
       }
       }
     });
     });
-    viewModel.isInvalid(_hasErrors);
+    workflowEditorViewModel.isInvalid(_hasErrors);
   }
   }
 
 
   $(document).ready(function(){
   $(document).ready(function(){
@@ -843,7 +843,7 @@ ${ utils.submit_popup_event() }
       if (window.location.pathname.indexOf('/oozie/editor/workflow') > -1) {
       if (window.location.pathname.indexOf('/oozie/editor/workflow') > -1) {
         $("canvas").remove();
         $("canvas").remove();
         exposeOverlayClickHandler();
         exposeOverlayClickHandler();
-        if (viewModel.isEditing()) {
+        if (workflowEditorViewModel.isEditing()) {
           hueUtils.waitForRendered('#oozie_workflowComponents .card-toolbar-content', function (el) {
           hueUtils.waitForRendered('#oozie_workflowComponents .card-toolbar-content', function (el) {
             return el.height() > 40 && el.height() < 200
             return el.height() > 40 && el.height() < 200
           }, function () {
           }, function () {
@@ -918,7 +918,7 @@ ${ utils.submit_popup_event() }
       if (clusterConfig['cluster_type'] != 'dataeng') {
       if (clusterConfig['cluster_type'] != 'dataeng') {
         interpreters = interpreters.concat(['subworkflow', 'fs', 'email', 'ssh', 'streaming', 'generic', 'stop']);
         interpreters = interpreters.concat(['subworkflow', 'fs', 'email', 'ssh', 'streaming', 'generic', 'stop']);
       }
       }
-      viewModel.availableActions(interpreters);
+      workflowEditorViewModel.availableActions(interpreters);
     }, 'oozie');
     }, 'oozie');
 
 
     huePubSub.publish('cluster.config.get.config');
     huePubSub.publish('cluster.config.get.config');