You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by xi...@apache.org on 2015/04/16 02:11:00 UTC

ambari git commit: AMBARI-10509. Delete selected widgets from Widget Browser from the widget layout.(XIWANG)

Repository: ambari
Updated Branches:
  refs/heads/trunk 546475471 -> bcc80c684


AMBARI-10509. Delete selected widgets from Widget Browser from the widget layout.(XIWANG)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bcc80c68
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bcc80c68
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bcc80c68

Branch: refs/heads/trunk
Commit: bcc80c68424cb2b310a34b5ac32c2043858f55c4
Parents: 5464754
Author: Xi Wang <xi...@apache.org>
Authored: Wed Apr 15 15:52:46 2015 -0700
Committer: Xi Wang <xi...@apache.org>
Committed: Wed Apr 15 17:10:36 2015 -0700

----------------------------------------------------------------------
 .../controllers/main/service/info/summary.js    | 105 ++++++++++++++-----
 ambari-web/app/messages.js                      |   2 +
 .../app/styles/enhanced_service_dashboard.less  |   3 +-
 .../modal_popups/widget_browser_popup.hbs       |  14 ++-
 ambari-web/app/utils/ajax/ajax.js               |  10 ++
 5 files changed, 103 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/bcc80c68/ambari-web/app/controllers/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/summary.js b/ambari-web/app/controllers/main/service/info/summary.js
index 878fb0c..5a37bc3 100644
--- a/ambari-web/app/controllers/main/service/info/summary.js
+++ b/ambari-web/app/controllers/main/service/info/summary.js
@@ -402,24 +402,26 @@ App.MainServiceInfoSummaryController = Em.Controller.extend({
     var addedWidgetsNames = this.get('widgets').mapProperty('widgetName');
     if (data.items[0] && data.items.length) {
       this.set("allSharedWidgets",
-        data.items.map(function (widget) {
+        data.items.filter(function (widget) {
+          return widget.Widgets.widget_type != "HEATMAP";
+        }).map(function (widget) {
           var widgetType = widget.Widgets.widget_type;
           var widgetName = widget.Widgets.widget_name;
-          if (widgetType != "HEATMAP") {
-            return Em.Object.create({
-              iconPath: "/img/widget-" + widgetType.toLowerCase() + ".png",
-              widgetName: widgetName,
-              displayName: widget.Widgets.display_name,
-              description: widget.Widgets.description,
-              widgetType: widgetType,
-              serviceName: widget.Widgets.metrics.mapProperty('service_name').uniq().join('-'),
-              added: addedWidgetsNames.contains(widgetName)
-            });
-          }
+          return Em.Object.create({
+            id: widget.Widgets.id,
+            widgetName: widgetName,
+            displayName: widget.Widgets.display_name,
+            description: widget.Widgets.description,
+            widgetType: widgetType,
+            iconPath: "/img/widget-" + widgetType.toLowerCase() + ".png",
+            serviceName: widget.Widgets.metrics.mapProperty('service_name').uniq().join('-'),
+            added: addedWidgetsNames.contains(widgetName),
+            isShared: true
+          });
         })
       );
-      this.set('isAllSharedWidgetsLoaded', true);
     }
+    this.set('isAllSharedWidgetsLoaded', true);
   },
 
   allSharedWidgets: [],
@@ -449,24 +451,26 @@ App.MainServiceInfoSummaryController = Em.Controller.extend({
     var addedWidgetsNames = this.get('widgets').mapProperty('widgetName');
     if (data.items[0] && data.items.length) {
       this.set("mineWidgets",
-        data.items.map(function (widget) {
+        data.items.filter(function (widget) {
+          return widget.Widgets.widget_type != "HEATMAP";
+        }).map(function (widget) {
           var widgetType = widget.Widgets.widget_type;
           var widgetName = widget.Widgets.widget_name;
-          if (widgetType != "HEATMAP") {
-            return Em.Object.create({
-              iconPath: "/img/widget-" + widgetType.toLowerCase() + ".png",
-              widgetName: widgetName,
-              displayName: widget.Widgets.display_name,
-              description: widget.Widgets.description,
-              widgetType: widgetType,
-              serviceName: widget.Widgets.metrics.mapProperty('service_name').uniq().join('-'),
-              added: addedWidgetsNames.contains(widgetName)
-            });
-          }
+          return Em.Object.create({
+            id: widget.Widgets.id,
+            widgetName: widgetName,
+            displayName: widget.Widgets.display_name,
+            description: widget.Widgets.description,
+            widgetType: widgetType,
+            iconPath: "/img/widget-" + widgetType.toLowerCase() + ".png",
+            serviceName: widget.Widgets.metrics.mapProperty('service_name').uniq().join('-'),
+            added: addedWidgetsNames.contains(widgetName),
+            isShared: false
+          });
         })
       );
-      this.set('isMineWidgetsLoaded', true);
     }
+    this.set('isMineWidgetsLoaded', true);
   },
 
   /**
@@ -517,6 +521,55 @@ App.MainServiceInfoSummaryController = Em.Controller.extend({
   },
 
   /**
+   * delete widgets, on click handler for "Delete"
+   */
+  deleteWidget: function (event) {
+    var widget = event.context;
+    var self = this;
+    var bodyMessage = Em.Object.create({
+      confirmMsg: Em.I18n.t('dashboard.widgets.browser.action.delete.bodyMsg').format(widget.displayName),
+      confirmButton: Em.I18n.t('dashboard.widgets.browser.action.delete.btnMsg')
+    });
+    return App.showConfirmationFeedBackPopup(function (query) {
+      return App.ajax.send({
+        name: 'widget.action.delete',
+        sender: self,
+        data: {
+          id: widget.id
+        },
+        success: 'updateWidgetBrowser'
+      });
+
+    }, bodyMessage);
+  },
+
+  /**
+   * update widget browser content after deleted some widget
+   */
+  updateWidgetBrowser: function () {
+    this.loadAllSharedWidgets();
+    this.loadMineWidgets();
+  },
+
+  /**
+   * unshare widgets, on click handler for "Unshare"
+   */
+  unshareWidget: function (event) {
+    var widget = event.context;
+    var widgetName = widget.widgetName;
+
+  },
+
+  /**
+   * Share widgets, on click handler for "Share"
+   */
+  shareWidget: function (event) {
+    var widget = event.context;
+    var widgetName = widget.widgetName;
+
+  },
+
+  /**
    * save layout
    * return {$.ajax}
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/bcc80c68/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index c5e3a1a..45124e4 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -2270,6 +2270,8 @@ Em.I18n.translations = {
   'dashboard.widgets.browser.action.delete': 'Delete',
   'dashboard.widgets.browser.action.unshare': 'Unshare',
   'dashboard.widgets.browser.action.share': 'Share',
+  'dashboard.widgets.browser.action.delete.bodyMsg': 'You are about to permanently delete widget: {0}. You can add it back through creating new widget.',
+  'dashboard.widgets.browser.action.delete.btnMsg': 'Confirm Delete',
 
   'dashboard.widgets.NameNodeHeap': 'NameNode Heap',
   'dashboard.widgets.NameNodeCpu': 'NameNode CPU WIO',

http://git-wip-us.apache.org/repos/asf/ambari/blob/bcc80c68/ambari-web/app/styles/enhanced_service_dashboard.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/enhanced_service_dashboard.less b/ambari-web/app/styles/enhanced_service_dashboard.less
index 092b551..f410554 100644
--- a/ambari-web/app/styles/enhanced_service_dashboard.less
+++ b/ambari-web/app/styles/enhanced_service_dashboard.less
@@ -359,7 +359,7 @@
     }
   }
   #services-filter-bar {
-    padding: 10px;
+    padding: 0px 10px 10px 10px;
     a {
       font-size: 14px;
       padding: 3px;
@@ -432,6 +432,7 @@
         }
         .dropdown-menu {
           min-width: 110px;
+          left: 0px;
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/bcc80c68/ambari-web/app/templates/common/modal_popups/widget_browser_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/modal_popups/widget_browser_popup.hbs b/ambari-web/app/templates/common/modal_popups/widget_browser_popup.hbs
index 9b83b1b..67acbe6 100644
--- a/ambari-web/app/templates/common/modal_popups/widget_browser_popup.hbs
+++ b/ambari-web/app/templates/common/modal_popups/widget_browser_popup.hbs
@@ -72,14 +72,20 @@
                     </button>
                     <ul class="dropdown-menu">
                       <li>
-                        <a href="#" {{action deleteWidget widget target="controller"}}>
+                        <a href="#" {{action "deleteWidget" widget target="controller"}}>
                           {{t dashboard.widgets.browser.action.delete}}
                         </a>
                       </li>
                       <li>
-                        <a href="#" {{action unshareWidget widget target="controller"}}>
-                          {{t dashboard.widgets.browser.action.unshare}}
-                        </a>
+                        {{#if widget.isShared}}
+                          <a href="#" {{action "unshareWidget" widget target="controller"}}>
+                            {{t dashboard.widgets.browser.action.unshare}}
+                          </a>
+                        {{else}}
+                          <a href="#" {{action "shareWidget" widget target="controller"}}>
+                            {{t dashboard.widgets.browser.action.share}}
+                          </a>
+                        {{/if}}
                       </li>
                     </ul>
                     <button type="button" class="btn btn-default" {{action "addWidget" widget target="controller"}} >

http://git-wip-us.apache.org/repos/asf/ambari/blob/bcc80c68/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index 0dadc53..e7d28bc 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -2442,6 +2442,16 @@ var urls = {
     }
   },
 
+  'widget.action.delete': {
+    real: '/clusters/{clusterName}/widgets/{id}',
+    mock: '',
+    format: function (data) {
+      return {
+        type: 'DELETE'
+      }
+    }
+  },
+
   'widgets.serviceComponent.metrics.get': {
     real: '/clusters/{clusterName}/services/{serviceName}/components/{componentName}?fields={widgetIds}',
     mock: '/data/metrics/{serviceName}/Append_num_ops_&_Delete_num_ops.json'