src/static/iconolab/js/dist/bundle.js
changeset 12 3945ec6dfbf1
parent 8 7e49ce535296
--- a/src/static/iconolab/js/dist/bundle.js	Tue Jun 07 11:43:56 2016 +0200
+++ b/src/static/iconolab/js/dist/bundle.js	Tue Jun 07 17:57:08 2016 +0200
@@ -89,6 +89,8 @@
 	var config = null;
 	var startPoint = null;
 	var drawing_path = null;
+	var canDraw = false;
+	var rectZone = null;
 	var PATH_COLOR = "#ff00ff";
 	var SELECTED_COLOR = "#ffff00";
 	var FIRST_NODE_COLOR = "#FF0000";
@@ -97,7 +99,9 @@
 	var enablePoint = true;
 	var pathIsClosed = false;
 	var ENABLE_NEW_NODE = true;
-	var mode = "rect"; //free
+	var RECT_MODE ='RECT';
+	var drawingMode = RECT_MODE; //free
+	var FREE_MODE = 'FREE';
 
 	var getId = (function () {
 			var cpt = 0;
@@ -172,9 +176,6 @@
 		jQuery("#action-wrapper").show();
 	};
 
-	var drawRectangle = function () {
-		//draw rectangle point and draw	
-	}
 
 	var onClickOnHandler = function (point, p, e) {
 		//close path
@@ -256,14 +257,9 @@
 		return point;
 	}
 
-	var setPath = function () {
-
-	}
-
 	//create paper
 	var createPoint = function (paper, x, y, pointData) {
 
-		console.log("... Inside createPoint ... ");
 		var point = {x:x, y:y, id: getId()};
 		
 		/**/
@@ -276,42 +272,34 @@
 			enablePoint = true;
 			return false;
 		}
-		
+
 		point = createPointHandler(paper, point);
 		pointData.push(point);
 		updatePath(paper);
 	};
 
-	var createFragment = function () {
-
-	}
-
-	/* remove previous points */
-	var reset = function () {
-		console.log(pathIsClosed);
-		console.log("radical blaze");
-	}
-	var attachEvents = function (paper) {
+
+	var attachRectEvents = function (paper) {
 		var startPosition = {};
 		var currentPosition = {};
-		var zone = null;
-		var canDraw = false;
+		/* add resizer */
 
 		paper.mousedown(function (e) {
+			if (drawingMode === FREE_MODE || pathIsClosed) { return; }
 			startPosition.x = e.offsetX;
 			startPosition.y = e.offsetY;
 			canDraw = true;
-			var startPoint = paper.rect(currentPosition.x, currentPosition.y, 6, 6);
-			startPoint.attr({stroke:'yellow'});
 		});
 
 		paper.mousemove(function (e) {
+			if (drawingMode === FREE_MODE) { return; }
+			if (!canDraw) { return; }
+			var x, y;
 			currentPosition.x = e.offsetX;
 			currentPosition.y = e.offsetY;
-			if (!canDraw) { return; }
 			
-			if (zone) {
-				zone.remove();
+			if (rectZone) {
+				rectZone.remove();
 			}
 
 			/* bas -> droite */
@@ -340,18 +328,76 @@
 				x = currentPosition.x
 				y = currentPosition.y - height;
 			}
-
-			zone = paper.rect(x, y, width, height);
-			zone.attr({opacity: 0.4});
-			zone.drag();
+			if(!x || !y) { return; }		
+			rectZone = paper.rect(x, y, width, height);
+			rectZone.attr({opacity: 0.4});
 		});
 
 
 		paper.mouseup(function () {
+			if ((drawingMode === FREE_MODE) || pathIsClosed || !rectZone) { return false; }
+			rectZone.drag();
 			canDraw = false;
+			pathIsClosed = true;
+		});
+	};
+
+	var attachPointEvents = function (paper) {
+
+		paper.click( function(e) {
+			if (drawingMode === RECT_MODE) {
+				return true;
+			}
+
+			if (!ENABLE_NEW_NODE) { return true; }
+			createPoint(paper, e.offsetX, e.offsetY, pointData);
 		});
-	}
-
+	};
+
+	var API = {
+		
+		setMode: function (mode) {
+			var availableMode = ['RECT', 'FREE'];
+			console.log("undefined", mode);
+			if (availableMode.indexOf(mode) !== -1) {
+				drawingMode = mode;
+			}
+			this.clear();
+		},
+		
+		clear: function () {
+			/* clear previous path, point, handler */
+			pointData.map(function (point) {
+				if (point.handler) {
+					point.handler.remove();
+				}
+			});
+
+			/*clear path is exists*/
+			 if (drawing_path) {
+			 	drawing_path.remove();
+			 }
+
+			 if (rectZone) {
+			 	rectZone.remove();
+			 }
+
+			pointData = [];
+			startPoint = null;
+			drawing_path = null;
+			isDragged = false;
+			enablePoint = true;
+			pathIsClosed = false;
+			ENABLE_NEW_NODE = true;
+			/* clear path */
+
+		},
+
+		getPath: function () {
+			/* retourne le chemin */
+			console.log();
+		}
+	};
 
 	module.exports = {
 
@@ -386,18 +432,11 @@
 
 			paper = new Snap(cutCanvas.get(0));
 
-			/* handleEvents */
-			jQuery(config.actionWrapper).on("click", ".create", function () { alert("Kotew te ye...");});
-			jQuery(config.actionWrapper).on("click", ".delete", function () { alert("delete..."); });
-
-			/* show path, init the drawing module*/
-			paper.click( function(e) {
-				if (!ENABLE_NEW_NODE) { return true; }
-				createPoint(paper, e.offsetX, e.offsetY, pointData);
-			});
-
 			/* handle drawin here */
-			attachEvents(paper);
+			attachPointEvents(paper);
+			attachRectEvents(paper);
+
+			return API;
 		},
 	};