Jelajahi Sumber

AMBARI-5191 UI get broken when routing to nonexistent host or service. (atkach)

atkach 11 tahun lalu
induk
melakukan
360662ed6c
2 mengubah file dengan 12 tambahan dan 3 penghapusan
  1. 7 3
      ambari-web/app/routes/main.js
  2. 5 0
      ambari-web/app/views/main/host/details.js

+ 7 - 3
ambari-web/app/routes/main.js

@@ -607,7 +607,7 @@ module.exports = Em.Route.extend({
           var controller = router.get('mainController');
           controller.dataLoading().done(function () {
             var service = router.get('mainServiceItemController.content');
-            if (!service) {
+            if (!service || !service.get('isLoaded')) {
               service = App.Service.find().objectAt(0); // getting the first service to display
             }
             router.transitionTo('service.summary', service);
@@ -631,8 +631,12 @@ module.exports = Em.Route.extend({
         route: '/summary',
         connectOutlets: function (router, context) {
           var item = router.get('mainServiceItemController.content');
-          var viewName = 'mainServiceInfoSummary';
-          router.get('mainServiceItemController').connectOutlet('mainServiceInfoSummary', item);
+          //if service is not existed then route to default service
+          if (item.get('isLoaded')) {
+            router.get('mainServiceItemController').connectOutlet('mainServiceInfoSummary', item);
+          } else {
+            router.transitionTo('services.index');
+          }
         }
       }),
       metrics: Em.Route.extend({

+ 5 - 0
ambari-web/app/views/main/host/details.js

@@ -40,6 +40,11 @@ App.MainHostDetailsView = Em.View.extend({
       {action: 'deleteHost', liClass:'', cssClass: 'icon-remove', 'label': this.t('hosts.host.details.deleteHost')}];
   }.property('controller.content','isActive', 'controller.content.isNotHeartBeating'),
   didInsertElement: function() {
+    //if host is not existed then route to list of hosts
+    if (!this.get('content.isLoaded')) {
+      App.router.transitionTo('main.hosts.index');
+      return;
+    }
     App.tooltip($("[rel='HealthTooltip']"));
   }
 });