From 95531a35588f5211a041c1ea00779384b086a6b7 Mon Sep 17 00:00:00 2001
From: OttoMao <ottomao@gmail.com>
Date: Sat, 11 Jul 2015 20:19:41 +0800
Subject: [PATCH] optimize the function to show popup

---
 web/build/filter.js |  2 +-
 web/build/index.js  | 79 ++++++++++++++++++++-----------------------
 web/page.js         | 81 ++++++++++++++++++++-------------------------
 web/src/filter.js   |  2 +-
 web/src/index.js    | 79 ++++++++++++++++++++-----------------------
 5 files changed, 108 insertions(+), 135 deletions(-)

diff --git a/web/build/filter.js b/web/build/filter.js
index f4183f7..54eeef1 100644
--- a/web/build/filter.js
+++ b/web/build/filter.js
@@ -27,7 +27,7 @@ function init(React){
 							React.createElement("input", {className: "uk-form-large", ref: "keywordInput", onChange: self.dealChange, type: "text", placeholder: "keywords or /^regExp$/", width: "300"})
 						)
 					), 
-					React.createElement("dl", {class: "uk-description-list-horizontal"}, 
+					React.createElement("dl", {className: "uk-description-list-horizontal"}, 
 					    React.createElement("dt", null, "wrap your RegExp between two slashes"), 
 					    React.createElement("dd", null, 
 						    "e.g. ", React.createElement("br", null), 
diff --git a/web/build/index.js b/web/build/index.js
index fe8ab2f..744772a 100644
--- a/web/build/index.js
+++ b/web/build/index.js
@@ -6,10 +6,13 @@ var EventManager    = require('../lib/event'),
 
 var WsIndicator = require("./wsIndicator").init(React),
 	RecordPanel = require("./recordPanel").init(React),
-	MapPanel    = require("./mapPanel").init(React),
-	Detail      = require("./detailPanel").init(React),
-	Popup       = require("./popup").init(React),
-	Filter      = require("./filter").init(React);
+	Popup       = require("./popup").init(React);
+
+var PopupContent = {
+	map    : require("./mapPanel").init(React),
+	detail : require("./detailPanel").init(React),
+	filter : require("./filter").init(React)
+};
 
 var ifPause     = false,
     recordSet   = [];
@@ -20,6 +23,13 @@ var ifPause     = false,
 //Event : wsEnd
 var eventCenter = new EventManager();
 
+//merge : right --> left
+function util_merge(left,right){
+    for(var key in right){
+        left[key] = right[key];
+    }
+    return left;
+}
 
 //invoke AnyProxy web socket util
 (function(){
@@ -70,27 +80,31 @@ var eventCenter = new EventManager();
 
 
 //init popup
-var pop;
+var showPop;
 (function(){
 	$("body").append('<div id="J_popOuter"></div>');
-	pop = React.render(
+	var pop = React.render(
 		React.createElement(Popup, null),
 		document.getElementById("J_popOuter")
 	);
-})();
 
+	showPop = function(tag,props,popArg){
+		var tagEl = PopupContent[tag];
+		if(!tagEl) throw new Error("element not found, please make sure your panel has been pluged");
+
+		var contentEl = React.createElement(tagEl, props);
+		var defaultPopPara = {
+			show    : true,
+			content : contentEl
+		};
+
+		pop.setState(util_merge(defaultPopPara,popArg));
+	}
+})();
 
 //init record panel
 var recorder;
 (function(){
-	//merge : right --> left
-	function util_merge(left,right){
-	    for(var key in right){
-	        left[key] = right[key];
-	    }
-	    return left;
-	}
-
 	function updateRecordSet(newRecord){
 		if(ifPause) return;
 
@@ -108,14 +122,6 @@ var recorder;
 		}
 	}
 
-	function showDetail(data){
-		pop.setState({
-			show: true,
-			content : React.createElement(Detail, {data: data}),
-			left:"35%"
-		});
-	}
-
 	eventCenter.addListener("wsGetUpdate",updateRecordSet);
 
 	eventCenter.addListener('recordSetUpdated',function(){
@@ -130,6 +136,10 @@ var recorder;
 		});
 	});
 
+	function showDetail(data){
+		showPop("detail", {data:data}, {left:"35%"});
+	}
+
 	//init recorder panel
 	recorder = React.render(
 		React.createElement(RecordPanel, {onSelect: showDetail}),
@@ -187,34 +197,15 @@ var recorder;
 			eventCenter.dispatchEvent("filterUpdated",key);
 		}
 
-		var filter = (React.createElement(Filter, {onChangeKeyword: updateKeyword}));
-		function showFilter(){
-			pop.setState({
-				show    : true,
-				content : filter,
-				left:"50%"
-			});
-		}
-
 		$(".J_showFilter").on("click",function(){
-			showFilter();
+			showPop("filter", {onChangeKeyword : updateKeyword}, { left : "50%"});
 		});
 	})();
 
 	//map local
 	(function(){
-		var mapPanel = (React.createElement(MapPanel, null));
-		function showMap(){
-			pop.setState({
-				show : true,
-				content : mapPanel,
-				left:"40%"
-
-			})
-		}
-
 		$(".J_showMapPanel").on("click",function(){
-			showMap();
+			showPop("map", {}, {left : "40%"});
 		});
 	})();
 
diff --git a/web/page.js b/web/page.js
index 34b9a41..82ad8d8 100644
--- a/web/page.js
+++ b/web/page.js
@@ -52,10 +52,13 @@
 
 	var WsIndicator = __webpack_require__(6).init(React),
 		RecordPanel = __webpack_require__(8).init(React),
-		MapPanel    = __webpack_require__(7).init(React),
-		Detail      = __webpack_require__(1).init(React),
-		Popup       = __webpack_require__(9).init(React),
-		Filter      = __webpack_require__(10).init(React);
+		Popup       = __webpack_require__(9).init(React);
+
+	var PopupContent = {
+		map    : __webpack_require__(7).init(React),
+		detail : __webpack_require__(1).init(React),
+		filter : __webpack_require__(10).init(React)
+	};
 
 	var ifPause     = false,
 	    recordSet   = [];
@@ -66,6 +69,13 @@
 	//Event : wsEnd
 	var eventCenter = new EventManager();
 
+	//merge : right --> left
+	function util_merge(left,right){
+	    for(var key in right){
+	        left[key] = right[key];
+	    }
+	    return left;
+	}
 
 	//invoke AnyProxy web socket util
 	(function(){
@@ -116,27 +126,31 @@
 
 
 	//init popup
-	var pop;
+	var showPop;
 	(function(){
 		$("body").append('<div id="J_popOuter"></div>');
-		pop = React.render(
+		var pop = React.render(
 			React.createElement(Popup, null),
 			document.getElementById("J_popOuter")
 		);
-	})();
 
+		showPop = function(tag,props,popArg){
+			var tagEl = PopupContent[tag];
+			if(!tagEl) throw new Error("element not found, please make sure your panel has been pluged");
+
+			var contentEl = React.createElement(tagEl, props);
+			var defaultPopPara = {
+				show    : true,
+				content : contentEl
+			};
+
+			pop.setState(util_merge(defaultPopPara,popArg));
+		}
+	})();
 
 	//init record panel
 	var recorder;
 	(function(){
-		//merge : right --> left
-		function util_merge(left,right){
-		    for(var key in right){
-		        left[key] = right[key];
-		    }
-		    return left;
-		}
-
 		function updateRecordSet(newRecord){
 			if(ifPause) return;
 
@@ -154,14 +168,6 @@
 			}
 		}
 
-		function showDetail(data){
-			pop.setState({
-				show: true,
-				content : React.createElement(Detail, {data: data}),
-				left:"35%"
-			});
-		}
-
 		eventCenter.addListener("wsGetUpdate",updateRecordSet);
 
 		eventCenter.addListener('recordSetUpdated',function(){
@@ -176,6 +182,10 @@
 			});
 		});
 
+		function showDetail(data){
+			showPop("detail", {data:data}, {left:"35%"});
+		}
+
 		//init recorder panel
 		recorder = React.render(
 			React.createElement(RecordPanel, {onSelect: showDetail}),
@@ -233,34 +243,15 @@
 				eventCenter.dispatchEvent("filterUpdated",key);
 			}
 
-			var filter = (React.createElement(Filter, {onChangeKeyword: updateKeyword}));
-			function showFilter(){
-				pop.setState({
-					show    : true,
-					content : filter,
-					left:"50%"
-				});
-			}
-
 			$(".J_showFilter").on("click",function(){
-				showFilter();
+				showPop("filter", {onChangeKeyword : updateKeyword}, { left : "50%"});
 			});
 		})();
 
 		//map local
 		(function(){
-			var mapPanel = (React.createElement(MapPanel, null));
-			function showMap(){
-				pop.setState({
-					show : true,
-					content : mapPanel,
-					left:"40%"
-
-				})
-			}
-
 			$(".J_showMapPanel").on("click",function(){
-				showMap();
+				showPop("map", {}, {left : "40%"});
 			});
 		})();
 
@@ -20409,7 +20400,7 @@
 								React.createElement("input", {className: "uk-form-large", ref: "keywordInput", onChange: self.dealChange, type: "text", placeholder: "keywords or /^regExp$/", width: "300"})
 							)
 						), 
-						React.createElement("dl", {class: "uk-description-list-horizontal"}, 
+						React.createElement("dl", {className: "uk-description-list-horizontal"}, 
 						    React.createElement("dt", null, "wrap your RegExp between two slashes"), 
 						    React.createElement("dd", null, 
 							    "e.g. ", React.createElement("br", null), 
diff --git a/web/src/filter.js b/web/src/filter.js
index 4930d8b..140bdc1 100644
--- a/web/src/filter.js
+++ b/web/src/filter.js
@@ -27,7 +27,7 @@ function init(React){
 							<input className="uk-form-large" ref="keywordInput" onChange={self.dealChange} type="text" placeholder="keywords or /^regExp$/" width="300"/>
 						</form>
 					</div>
-					<dl class="uk-description-list-horizontal">
+					<dl className="uk-description-list-horizontal">
 					    <dt>wrap your RegExp between two slashes</dt>
 					    <dd>
 						    e.g. <br />
diff --git a/web/src/index.js b/web/src/index.js
index 7c88d12..cbdbb2f 100644
--- a/web/src/index.js
+++ b/web/src/index.js
@@ -6,10 +6,13 @@ var EventManager    = require('../lib/event'),
 
 var WsIndicator = require("./wsIndicator").init(React),
 	RecordPanel = require("./recordPanel").init(React),
-	MapPanel    = require("./mapPanel").init(React),
-	Detail      = require("./detailPanel").init(React),
-	Popup       = require("./popup").init(React),
-	Filter      = require("./filter").init(React);
+	Popup       = require("./popup").init(React);
+
+var PopupContent = {
+	map    : require("./mapPanel").init(React),
+	detail : require("./detailPanel").init(React),
+	filter : require("./filter").init(React)
+};
 
 var ifPause     = false,
     recordSet   = [];
@@ -20,6 +23,13 @@ var ifPause     = false,
 //Event : wsEnd
 var eventCenter = new EventManager();
 
+//merge : right --> left
+function util_merge(left,right){
+    for(var key in right){
+        left[key] = right[key];
+    }
+    return left;
+}
 
 //invoke AnyProxy web socket util
 (function(){
@@ -70,27 +80,31 @@ var eventCenter = new EventManager();
 
 
 //init popup
-var pop;
+var showPop;
 (function(){
 	$("body").append('<div id="J_popOuter"></div>');
-	pop = React.render(
+	var pop = React.render(
 		<Popup />,
 		document.getElementById("J_popOuter")
 	);
-})();
 
+	showPop = function(tag,props,popArg){
+		var tagEl = PopupContent[tag];
+		if(!tagEl) throw new Error("element not found, please make sure your panel has been pluged");
+
+		var contentEl = React.createElement(tagEl, props);
+		var defaultPopPara = {
+			show    : true,
+			content : contentEl
+		};
+
+		pop.setState(util_merge(defaultPopPara,popArg));
+	}
+})();
 
 //init record panel
 var recorder;
 (function(){
-	//merge : right --> left
-	function util_merge(left,right){
-	    for(var key in right){
-	        left[key] = right[key];
-	    }
-	    return left;
-	}
-
 	function updateRecordSet(newRecord){
 		if(ifPause) return;
 
@@ -108,14 +122,6 @@ var recorder;
 		}
 	}
 
-	function showDetail(data){
-		pop.setState({
-			show: true,
-			content : <Detail data={data}/>,
-			left:"35%"
-		});
-	}
-
 	eventCenter.addListener("wsGetUpdate",updateRecordSet);
 
 	eventCenter.addListener('recordSetUpdated',function(){
@@ -130,6 +136,10 @@ var recorder;
 		});
 	});
 
+	function showDetail(data){
+		showPop("detail", {data:data}, {left:"35%"});
+	}
+
 	//init recorder panel
 	recorder = React.render(
 		<RecordPanel onSelect={showDetail}/>,
@@ -187,34 +197,15 @@ var recorder;
 			eventCenter.dispatchEvent("filterUpdated",key);
 		}
 
-		var filter = (<Filter onChangeKeyword={updateKeyword} />);
-		function showFilter(){
-			pop.setState({
-				show    : true,
-				content : filter,
-				left:"50%"
-			});
-		}
-
 		$(".J_showFilter").on("click",function(){
-			showFilter();
+			showPop("filter", {onChangeKeyword : updateKeyword}, { left : "50%"});
 		});
 	})();
 
 	//map local
 	(function(){
-		var mapPanel = (<MapPanel />);
-		function showMap(){
-			pop.setState({
-				show : true,
-				content : mapPanel,
-				left:"40%"
-
-			})
-		}
-
 		$(".J_showMapPanel").on("click",function(){
-			showMap();
+			showPop("map", {}, {left : "40%"});
 		});
 	})();