Browse Source

HUE-5965 [sentry] Support hashchange without reloading the app

Enrico Berti 8 years ago
parent
commit
b29bb246f1

+ 1 - 1
apps/security/src/security/templates/hdfs.mako

@@ -370,7 +370,7 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
         _resizeTimeout = window.setTimeout(resizeComponents, 100);
       });
 
-      window.onpopstate = function() {
+      window.onhashchange = function() {
         if (window.location.pathname.indexOf('/security') > -1) {
           viewModel.assist.path(window.location.hash.substr(1));
         }

+ 1 - 1
apps/security/src/security/templates/hive.mako

@@ -701,7 +701,7 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
         _resizeTimeout = window.setTimeout(resizeComponents, 100);
       });
 
-      window.onpopstate = function() {
+      window.onhashchange = function() {
         if (window.location.pathname.indexOf('/security') > -1) {
           viewModel.assist.path(viewModel.getPathHash());
         }

+ 4 - 4
apps/security/src/security/templates/layout.mako

@@ -63,15 +63,15 @@ def is_selected(section, matcher):
                 </a>
               </li>
               % if HIVE_V1.get():
-              <li class="${is_selected(section, 'hive1')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:hive') + "')" or url('security:hive') }">${_('Hive Tables')}</a></li>
+              <li class="${is_selected(section, 'hive1')}"><a href="${ url('security:hive') }">${_('Hive Tables')}</a></li>
               % endif
               % if HIVE_V2.get():
-              <li class="${is_selected(section, 'hive')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:hive2') + "')" or url('security:hive2') }">${_('Hive Tables v2')}</a></li>
+              <li class="${is_selected(section, 'hive')}"><a href="${ url('security:hive2') }">${_('Hive Tables v2')}</a></li>
               % endif
               % if SOLR_V2.get():
-              <li class="${is_selected(section, 'solr')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:solr') + "')" or url('security:solr') }">${_('Solr Collections')}</a></li>
+              <li class="${is_selected(section, 'solr')}"><a href="${ url('security:solr') }">${_('Solr Collections')}</a></li>
               % endif
-              <li class="${is_selected(section, 'hdfs')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:hdfs') + "')" or url('security:hdfs') }">${_('File ACLs')}</a></li>
+              <li class="${is_selected(section, 'hdfs')}"><a href="${ url('security:hdfs') }">${_('File ACLs')}</a></li>
             </ul>
           </div>
         </div>

+ 1 - 1
apps/security/src/security/templates/sentry.mako

@@ -758,7 +758,7 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
         _resizeTimeout = window.setTimeout(resizeComponents, 100);
       });
 
-      window.onpopstate = function () {
+      window.onhashchange = function () {
         if (window.location.pathname.indexOf('/security') > -1) {
           viewModel.assist.path(viewModel.getPathHash());
         }

+ 14 - 8
desktop/core/src/desktop/templates/hue.mako

@@ -729,6 +729,8 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
 
         page.base('/hue');
 
+        self.lastContext = null;
+
         var pageMapping = [
           { url: '/500', app: '500' },
           { url: '/about/', app: 'admin_wizard' },
@@ -842,25 +844,29 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
             self.changeEditorType('pig');
           }},
           { url: '/search/*', app: 'dashboard' },
-          { url: '/security/hdfs', app: function () {
-            if (loadedApps.indexOf('security_hdfs') == -1) {
+          { url: '/security/hdfs', app: function (ctx) {
+            if (self.lastContext == null || ctx.path !== self.lastContext.path) {
               self.loadApp('security_hdfs');
             }
+            self.lastContext = ctx;
           }},
-          { url: '/security/hive', app: function () {
-            if (loadedApps.indexOf('security_hive') == -1) {
+          { url: '/security/hive', app: function (ctx) {
+            if (self.lastContext == null || ctx.path !== self.lastContext.path) {
               self.loadApp('security_hive');
             }
+            self.lastContext = ctx;
           }},
-          { url: '/security/hive2', app: function () {
-            if (loadedApps.indexOf('security_hive2') == -1) {
+          { url: '/security/hive2', app: function (ctx) {
+            if (self.lastContext == null || ctx.path !== self.lastContext.path) {
               self.loadApp('security_hive2');
             }
+            self.lastContext = ctx;
           }},
-          { url: '/security/solr', app: function () {
-            if (loadedApps.indexOf('security_solr') == -1) {
+          { url: '/security/solr', app: function (ctx) {
+            if (self.lastContext == null || ctx.path !== self.lastContext.path) {
               self.loadApp('security_solr');
             }
+            self.lastContext = ctx;
           }},
           { url: '/security', app: function () {
             page('/security/hive');