- Timestamp:
- 2019-01-09T11:39:08+13:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-extensions/map-editor/DrawingManager/historyManager.js
r32721 r32722 1 1 var prevOverlays = []; 2 var presentOverlays = []; 3 var undoneOverlays = []; 2 4 3 5 function undo() { 4 6 5 7 for (var i = 0; i < overlays.length; i++) { 6 8 overlays[i].setMap(null); 7 9 8 10 } 9 if (prevOverlays.length != 0){ 11 if (prevOverlays.length != 0) { 12 selectedShapes = []; 10 13 overlays = []; 11 console.log(prevOverlays);14 undoneOverlaysPush(); 12 15 var prev_overlay = prevOverlays.pop(); 13 16 14 for (var i = 0; i < prev_overlay.length; i++) { 17 if(prev_overlay.length > 0) { 18 for (var i = 0; i < prev_overlay.length; i++) { 15 19 overlays[i] = prev_overlay[i]; 16 20 overlays[i].setMap(map); 17 } 18 19 } 20 21 } 22 } 23 24 25 } 26 21 27 //Deactivated at the moment 22 if (enableSelectionFeature){28 if (enableSelectionFeature) { 23 29 selectedShapes = []; 24 30 var i = 0; 25 var lastEntry = prevOverlays[prevOverlays.length -1][i];26 console.log(prevOverlays[prevOverlays.length -1].length);27 28 for (var i = 0; i < lastEntry.length; i++){31 var lastEntry = prevOverlays[prevOverlays.length - 1][i]; 32 console.log(prevOverlays[prevOverlays.length - 1].length); 33 34 for (var i = 0; i < lastEntry.length; i++) { 29 35 selectedShapes.push(prevOverlays) 30 36 console.log("comes here"); 31 37 } 32 33 } 38 39 } 40 } 41 42 function redo() { 34 43 35 36 } 37 38 function clonePath(path) 39 { 44 if (undoneOverlays.length != 0) { 45 selectedShapes = []; 46 for (var i = 0; i < overlays.length; i++) { 47 overlays[i].setMap(null); 48 } 49 overlays = []; 50 var lastEntry = undoneOverlays[undoneOverlays.length - 1]; 51 for (var i = 0; i < lastEntry.length; i++) { 52 overlays[i] = lastEntry[i]; 53 overlays[i].setMap(map); 54 } 55 var conditionPrevious = presentOverlays[presentOverlays.length - 1] !== undefined && presentOverlays[presentOverlays.length - 1].length !== 0 && presentOverlays.length !== 0; 56 57 if (conditionPrevious){ 58 prevOverlays.push(presentOverlays[0]); 59 } 60 61 presentOverlays = []; 62 //console.log("last undone", undoneOverlays[undoneOverlays.length -1]); 63 presentOverlays.push(undoneOverlays[undoneOverlays.length - 1]); 64 undoneOverlays.pop(); 65 66 } 67 68 } 69 70 function clonePath(path) { 40 71 var clone_path = []; 41 72 42 73 for (var i = 0; i < path.length; i++) { 43 74 var lati = path.getAt(i).lat(); … … 49 80 clone_path.push(clone_lat_lng); 50 81 } 51 82 52 83 return clone_path; 53 84 } 54 85 55 function clonePolyline(polyline) 56 { 57 var path = polyline.getPath(); 58 var geodesic = polyline.geodesic; 59 var strokeColor = polyline.strokeColor; 86 function clonePolyline(polyline) { 87 var path = polyline.getPath(); 88 var geodesic = polyline.geodesic; 89 var strokeColor = polyline.strokeColor; 60 90 var strokeOpacity = polyline.strokeOpacity; 61 var strokeWeight 62 var clone_path 63 //var editable = rect.editable; 64 91 var strokeWeight = polyline.strokeWeight; 92 var clone_path = clonePath(path); 93 //var editable = rect.editable; 94 65 95 var clone_polyline = new google.maps.Polyline({ 66 geodesic: geodesic,67 strokeColor: strokeColor,68 strokeOpacity: strokeOpacity,69 strokeWeight: strokeWeight,70 path: clone_path,71 draggable: true,72 editable: false73 });74 96 geodesic: geodesic, 97 strokeColor: strokeColor, 98 strokeOpacity: strokeOpacity, 99 strokeWeight: strokeWeight, 100 path: clone_path, 101 draggable: true, 102 editable: false 103 }); 104 75 105 clone_polyline.type = google.maps.drawing.OverlayType.POLYLINE; 76 106 77 107 return clone_polyline; 78 108 } 79 109 80 function clonePolygon(polygon) 81 { 82 var path = polygon.getPath(); 83 var geodesic = polygon.geodesic; 84 var strokeColor = polygon.strokeColor; 110 function clonePolygon(polygon) { 111 var path = polygon.getPath(); 112 var geodesic = polygon.geodesic; 113 var strokeColor = polygon.strokeColor; 85 114 var strokeOpacity = polygon.strokeOpacity; 86 var strokeWeight 87 var fillColor 88 var fillOpacity 89 var clone_path 90 //var editable = rect.editable; 91 115 var strokeWeight = polygon.strokeWeight; 116 var fillColor = polygon.fillColor; 117 var fillOpacity = polygon.fillOpacity; 118 var clone_path = clonePath(path); 119 //var editable = rect.editable; 120 92 121 var clone_polygon = new google.maps.Polygon({ 93 geodesic: geodesic,94 strokeColor: strokeColor,95 strokeOpacity: strokeOpacity,96 strokeWeight: strokeWeight,97 fillColor: fillColor,98 fillOpacity: fillOpacity,99 path: clone_path,100 draggable: true,101 editable: false102 });103 122 geodesic: geodesic, 123 strokeColor: strokeColor, 124 strokeOpacity: strokeOpacity, 125 strokeWeight: strokeWeight, 126 fillColor: fillColor, 127 fillOpacity: fillOpacity, 128 path: clone_path, 129 draggable: true, 130 editable: false 131 }); 132 104 133 clone_polygon.type = google.maps.drawing.OverlayType.POLYGON; 105 134 106 135 return clone_polygon; 107 136 } 108 137 109 function cloneRectangle(rect) 110 { 111 var strokeColor = rect.strokeColor; 138 function cloneRectangle(rect) { 139 var strokeColor = rect.strokeColor; 112 140 var strokeOpacity = rect.strokeOpacity; 113 var strokeWeight 114 var fillColor 115 var fillOpacity 116 var bounds 117 //var editable = rect.editable; 118 141 var strokeWeight = rect.strokeWeight; 142 var fillColor = rect.fillColor; 143 var fillOpacity = rect.fillOpacity; 144 var bounds = rect.getBounds(); 145 //var editable = rect.editable; 146 119 147 var clone_rect = new google.maps.Rectangle({ 120 strokeColor: strokeColor,121 strokeOpacity: strokeOpacity,122 strokeWeight: strokeWeight,123 fillColor: fillColor,124 fillOpacity: fillOpacity,125 bounds: bounds,126 draggable: true,127 editable: false128 });129 148 strokeColor: strokeColor, 149 strokeOpacity: strokeOpacity, 150 strokeWeight: strokeWeight, 151 fillColor: fillColor, 152 fillOpacity: fillOpacity, 153 bounds: bounds, 154 draggable: true, 155 editable: false 156 }); 157 130 158 clone_rect.type = google.maps.drawing.OverlayType.RECTANGLE; 131 159 132 160 return clone_rect; 133 161 } 134 162 135 function cloneCircle(circ) 136 { 137 var strokeColor = circ.strokeColor; 163 function cloneCircle(circ) { 164 var strokeColor = circ.strokeColor; 138 165 var strokeOpacity = circ.strokeOpacity; 139 var strokeWeight 140 var fillColor 141 var fillOpacity 142 var center 143 var radius 144 //var editable = rect.editable; 145 166 var strokeWeight = circ.strokeWeight; 167 var fillColor = circ.fillColor; 168 var fillOpacity = circ.fillOpacity; 169 var center = circ.center; 170 var radius = circ.radius; 171 //var editable = rect.editable; 172 146 173 var clone_circ = new google.maps.Circle({ 147 strokeColor: strokeColor,148 strokeOpacity: strokeOpacity,149 strokeWeight: strokeWeight,150 fillColor: fillColor,151 fillOpacity: fillOpacity,152 center: center,153 radius: radius,154 draggable: true,155 editable: false156 });157 174 strokeColor: strokeColor, 175 strokeOpacity: strokeOpacity, 176 strokeWeight: strokeWeight, 177 fillColor: fillColor, 178 fillOpacity: fillOpacity, 179 center: center, 180 radius: radius, 181 draggable: true, 182 editable: false 183 }); 184 158 185 clone_circ.type = google.maps.drawing.OverlayType.CIRCLE; 159 186 160 187 return clone_circ; 161 188 } 162 189 163 164 function cloneShape(shape) 165 { 190 function cloneShape(shape) { 166 191 if (shape.type === google.maps.drawing.OverlayType.POLYLINE) { 167 192 var clone_polyline = clonePolyline(shape); 168 193 return clone_polyline; 169 } 170 else if (shape.type === google.maps.drawing.OverlayType.POLYGON) { 194 } else if (shape.type === google.maps.drawing.OverlayType.POLYGON) { 171 195 var clone_polygon = clonePolygon(shape); 172 196 return clone_polygon; 173 } 174 else if (shape.type === google.maps.drawing.OverlayType.RECTANGLE) { 197 } else if (shape.type === google.maps.drawing.OverlayType.RECTANGLE) { 175 198 var clone_rect = cloneRectangle(shape); 176 199 return clone_rect; 177 178 } 179 else if (shape.type === google.maps.drawing.OverlayType.CIRCLE) { 200 201 } else if (shape.type === google.maps.drawing.OverlayType.CIRCLE) { 180 202 var clone_circ = cloneCircle(shape); 181 203 return clone_circ; 182 183 } 184 else { 204 205 } else { 185 206 console.error("Unrecognized shape: " + shape); 186 207 return null; 187 208 } 188 } 189 190 function overlayItemIsShape(overlay_item) 191 {209 console.log(cloneShape); 210 } 211 212 function overlayItemIsShape(overlay_item) { 192 213 var type = overlay_item.type; 193 214 194 215 is_shape = (type === google.maps.drawing.OverlayType.POLYLINE) 195 216 || (type === google.maps.drawing.OverlayType.POLYGON) 196 217 || (type === google.maps.drawing.OverlayType.RECTANGLE) 197 218 || (type === google.maps.drawing.OverlayType.CIRCLE); 198 199 return is_shape; 200 } 201 202 function historyOverlayPush() 203 { 204 console.log("comes here"); 219 220 return is_shape; 221 } 222 223 function historyOverlayPush() { 224 undoneOverlays = []; 205 225 var overlays_copy = []; 206 for (var i = 0; i <overlays.length; i++) {226 for (var i = 0; i < overlays.length; i++) { 207 227 var clone_shape = cloneShape(overlays[i]); 208 228 if (overlayItemIsShape(clone_shape)) { 209 addShapeListeners(clone_shape,null); // don't have an overlay event! 210 } 211 else { 212 addMarkerListeners(clone_shape,null); // don't have an overlay event! 229 addShapeListeners(clone_shape, null); // don't have an overlay event! 230 } else { 231 addMarkerListeners(clone_shape, null); // don't have an overlay event! 213 232 } 214 233 overlays_copy[i] = clone_shape; 215 234 } 216 217 prevOverlays.push(overlays_copy); 218 } 235 236 prevOverlays.push(overlays_copy); 237 238 } 239 240 function presentOverlayPush() { 241 if (resizeEntry) { 242 prevOverlays.push(presentOverlays[0]); 243 } 244 presentOverlays = []; 245 var overlays_copy = []; 246 for (var i = 0; i < overlays.length; i++) { 247 var clone_shape = cloneShape(overlays[i]); 248 if (overlayItemIsShape(clone_shape)) { 249 addShapeListeners(clone_shape, null); // don't have an overlay event! 250 } else { 251 addMarkerListeners(clone_shape, null); // don't have an overlay event! 252 } 253 overlays_copy[i] = clone_shape; 254 } 255 presentOverlays.push(overlays_copy); 256 } 257 258 function undoneOverlaysPush() { 259 var conditionUndone = presentOverlays[presentOverlays.length - 1] !== undefined && presentOverlays[presentOverlays.length - 1].length !== 0 && presentOverlays.length !== 0; 260 261 if (conditionUndone) { 262 undoneOverlays.push(presentOverlays[0]); 263 } 264 presentOverlays = []; 265 var conditionPresent = prevOverlays[prevOverlays.length - 1] !== undefined && prevOverlays[prevOverlays.length - 1].length !== 0 && prevOverlays.length !== 0; 266 267 if (conditionPresent) { 268 presentOverlays.push(prevOverlays[prevOverlays.length - 1]); 269 270 } 271 //prevOverlays.pop(); 272 273 }
Note:
See TracChangeset
for help on using the changeset viewer.