You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by zh...@apache.org on 2011/06/01 18:19:04 UTC

svn commit: r1130207 - in /incubator/rave/trunk/rave-portal/src/main/webapp: WEB-INF/views/home.jsp script/rave.js script/rave_api.js

Author: zhguo
Date: Wed Jun  1 16:19:04 2011
New Revision: 1130207

URL: http://svn.apache.org/viewvc?rev=1130207&view=rev
Log:
RAVE-41: Need to be able to delete widgets from a page
https://issues.apache.org/jira/browse/RAVE-41

Hopefully fixed the gadget/widget deletion bug discovered by Marlon.  Added a datastructure to map widget id to id of the region it belongs to. When a widget is added/moved/deleted, the map is updated accordingly.

Modified:
    incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp
    incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js
    incubator/rave/trunk/rave-portal/src/main/webapp/script/rave_api.js

Modified: incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp?rev=1130207&r1=1130206&r2=1130207&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp (original)
+++ incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp Wed Jun  1 16:19:04 2011
@@ -60,7 +60,7 @@
          If so, region.id must be included. When a gadget is moved, region id must be updated. 
          Otherwise, it is not needed.
     -->
-    <div class="widget-wrapper" id="widget-wrapper-${region.id}-${regionWidget.id}">
+    <div class="widget-wrapper" id="widget-wrapper-${regionWidget.id}">
         <div class="widget-title-bar" >
             <span id="widget-${regionWidget.id}-title">${regionWidget.widget.title}</span>
             
@@ -81,18 +81,20 @@
 					      icons: {
 					        primary: "ui-icon-close"
 					      }
-					    }).click(function() {
+					    }).unbind("click").click(function() {
+					        alert("remove gadget");
 					      rave.api.rpc.removeWidget({
 					    	  regionWidgetId: "${regionWidget.id}", 
 					    	  pageId: "${defaultPage.id}",
 					    	  region: {
-					    		  id: "region-${region.id}-id"
+					    	      id : rave.getGadgetRegion("${regionWidget.id}")
 					    	  },
 					    	  succCB: function() {
-					    		  $("#widget-wrapper-${region.id}-${regionWidget.id}").remove();
+					    		  $("#widget-wrapper-${regionWidget.id}").remove();
 					    	  }
 					    	});
 					    });
+						  rave.mapGadgetToRegion("${regionWidget.id}", "${region.id}");
 						  </script>
 						</span>
             

Modified: incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js?rev=1130207&r1=1130206&r2=1130207&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js (original)
+++ incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js Wed Jun  1 16:19:04 2011
@@ -19,6 +19,9 @@
 var rave = rave || (function() {
     var providerList = [];
     var context = "";
+    
+    // map widget id to region id
+    var widgetRegionMap = {};
 
 
     /**
@@ -97,7 +100,7 @@ var rave = rave || (function() {
         }
 
         return {
-            init : init,
+            init : init
         }
 
     })();
@@ -164,6 +167,26 @@ var rave = rave || (function() {
 	 function deleteWidgetFromPage() {
 		  return null;
 	 }
+	 
+	 /**
+	  * Map a widget to the region where it is located.
+	  * 
+	  * @param widgetId: id of the widget (not DOM id)
+	  * @param regionId: if it is non null, it is mapped. It it is null or not present, delete the map entry.
+	  */
+	 function mapGadgetToRegion(widgetId, regionId) {
+	     delete widgetRegionMap[widgetId];
+	     if (arguments.length > 1 && regionId != null)
+	         widgetRegionMap[widgetId] = regionId;
+	 }
+	 
+	 /**
+      * Get the region where a widget/gadget belongs to.
+      * @param widgetId: id of the widget. (not DOM id)
+      */
+	 function getGadgetRegion(widgetId) {
+         return widgetRegionMap[widgetId];
+     }
 
     /**
      * Public API
@@ -225,11 +248,19 @@ var rave = rave || (function() {
          */
         getContext: getContext,
 
-		  /**
-			* Remove a selected gadget from the page
-			*/
-		  deleteGadget : deleteWidgetFromPage
-
-
+    	/**
+    	* Remove a selected gadget from the page
+    	*/
+    	deleteGadget : deleteWidgetFromPage,
+
+    	/**
+    	 * Change or delete gadget to region map entry.
+    	 */
+    	mapGadgetToRegion : mapGadgetToRegion,
+    	
+    	/**
+    	 * Get the region where a widget/gadget belongs to.
+    	 */
+    	getGadgetRegion : getGadgetRegion
     }
 })();
\ No newline at end of file

Modified: incubator/rave/trunk/rave-portal/src/main/webapp/script/rave_api.js
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/webapp/script/rave_api.js?rev=1130207&r1=1130206&r2=1130207&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/webapp/script/rave_api.js (original)
+++ incubator/rave/trunk/rave-portal/src/main/webapp/script/rave_api.js Wed Jun  1 16:19:04 2011
@@ -28,16 +28,21 @@ rave.api = rave.api || (function() {
 
       //This method is implemented by PageApi.java.  
         function moveWidgetOnPage(args) {
+            var widgetObjectId = rave.getObjectIdFromDomId(args.widget.id);
+            var toRegionObjectId = rave.getObjectIdFromDomId(args.targetRegion.id);
+            var fromRegionObjectId = rave.getObjectIdFromDomId(args.currentRegion.id);
             //Note context must be set outside this library.  See home.jsp for example.
-            $.post(rave.getContext() + path + "page/regionWidget/" + rave.getObjectIdFromDomId(args.widget.id) + "/move",
+            $.post(rave.getContext() + path + "page/regionWidget/" + widgetObjectId + "/move",
                     {
                         newPosition: args.targetIndex,
-                        toRegion: rave.getObjectIdFromDomId(args.targetRegion.id),
-                        fromRegion: rave.getObjectIdFromDomId(args.currentRegion.id)
+                        toRegion: toRegionObjectId,
+                        fromRegion: fromRegionObjectId
                     },
                     function(result) {
                         if (result.error) {
                             handleRpcError(result);
+                        } else {
+                            rave.mapGadgetToRegion(widgetObjectId, toRegionObjectId);
                         }
                     }
             ).error(handleError);
@@ -59,12 +64,13 @@ rave.api = rave.api || (function() {
         $.post(rave.getContext() + path + "page/" +args.pageId + "/widget/delete",
              {
                 widgetId: args.regionWidgetId,
-                regionId: rave.getObjectIdFromDomId(args.region.id)            
+                regionId: args.region.id            
              },
              function(result) {
                 if(result.error && result.error == true) {
                   handleRpcError(result);
                 } else {
+                    rave.mapGadgetToRegion(args.regionWidgetId, null);
                 	if (args.succCB != null && typeof args.succCB == 'function')
                 		args.succCB();
                 }
@@ -95,7 +101,7 @@ rave.api = rave.api || (function() {
         return {
             moveWidget : moveWidgetOnPage,
             addWidgetToPage : addWidgetToPage,
-      removeWidget : deleteWidgetOnPage
+            removeWidget : deleteWidgetOnPage
         };
 
     })();