Changeset 32799
- Timestamp:
- 2019-02-22T11:22:03+13:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/map-scripts-editor-history.js
r32769 r32799 1 //var prevOverlays = []; 2 //var presentOverlays = []; 3 //var undoneOverlays = []; 4 //var cycleComplete = true; 5 6 function MapEditorHistory() 7 { 1 2 function MapEditorHistory(mapEditor) { 8 3 this.prevOverlays = []; 9 4 this.presentOverlays = []; 10 5 this.undoneOverlays = []; 11 this.cycleComplete = true; 12 } 13 14 MapEditorHistory.prototype.undo = function() { 15 for (let i = 0; i < overlays.length; i++) { 16 overlays[i].setMap(null); 6 this.cycleCompvare = true; 7 this.mapEditor = mapEditor; 8 } 9 10 MapEditorHistory.prototype.undo = function () { 11 12 for (var i = 0; i < this.mapEditor.overlays.length; i++) { 13 this.mapEditor.overlays[i].setMap(null); 17 14 } 18 15 if (this.prevOverlays.length != 0) { 19 selectedShapes = [];20 overlays = [];16 this.mapEditor.selectedShapes = []; 17 this.mapEditor.overlays = []; 21 18 this.undoneOverlaysPush(); 22 let prev_overlay = this.prevOverlays.pop(); 23 19 var prev_overlay = this.prevOverlays.pop(); 20 var draggableCB = document.querySelector("input[name=draggableCB]").checked = false; 21 22 24 23 if (prev_overlay.length > 0) { 25 24 for (var i = 0; i < prev_overlay.length; i++) { 26 overlays[i] = prev_overlay[i];27 overlays[i].setMap(map);28 overlays[i].draggable = draggableState;25 this.mapEditor.overlays[i] = prev_overlay[i]; 26 this.mapEditor.overlays[i].setMap(this.mapEditor.map); 27 this.mapEditor.overlays[i].draggable = true; 29 28 } 30 29 } 31 30 } 32 31 }; 33 34 35 36 37 38 MapEditorHistory.prototype.redo = function() { 32 33 MapEditorHistory.prototype.redo = function () { 39 34 40 35 if (this.undoneOverlays.length != 0) { 41 selectedShapes = []; 42 for (let i = 0; i < overlays.length; i++) { 43 overlays[i].setMap(null); 44 } 45 46 overlays = []; 36 var draggableCB = document.querySelector("input[name=draggableCB]").checked = false; 37 this.mapEditor.selectedShapes = []; 38 for (var i = 0; i < this.mapEditor.overlays.length; i++) { 39 this.mapEditor.overlays[i].setMap(null); 40 } 41 42 this.mapEditor.overlays = []; 47 43 var lastEntry = this.undoneOverlays[this.undoneOverlays.length - 1]; 48 for ( leti = 0; i < lastEntry.length; i++) {49 overlays[i] = lastEntry[i];50 overlays[i].setMap(map);51 overlays[i].draggable = draggableState;44 for (var i = 0; i < lastEntry.length; i++) { 45 this.mapEditor.overlays[i] = lastEntry[i]; 46 this.mapEditor.overlays[i].setMap(this.mapEditor.map); 47 this.mapEditor.overlays[i].draggable = true; 52 48 } 53 49 … … 58 54 } else { 59 55 var overlays_copy = []; 60 for ( leti = 0; i < this.presentOverlays[0].length; i++) {61 var clone_shape = this.cloneShape(this.presentOverlays[0][i]);62 if ( this.overlayItemIsShape(clone_shape)) {63 addShapeListeners(clone_shape, null);56 for (var i = 0; i < this.presentOverlays[0].length; i++) { 57 var clone_shape = ShapesUtil.cloneShape(this.presentOverlays[0][i]); 58 if (ShapesUtil.overlayItemIsShape(clone_shape)) { 59 this.mapEditor.addShapeListeners(clone_shape, null); 64 60 } else { 65 addMarkerListeners(clone_shape, null);61 this.mapEditor.addMarkerListeners(clone_shape, null); 66 62 } 67 63 overlays_copy[i] = clone_shape; … … 76 72 } 77 73 78 79 80 81 MapEditorHistory.prototype.clonePath = function(path){ 74 /* 75 MapEditorHistory.prototype.clonePath = function (path) { 82 76 var clone_path = []; 83 77 … … 95 89 } 96 90 97 98 MapEditorHistory.prototype.clonePolyline = function(polyline){ 99 var path = polyline.getPath(); 91 MapEditorHistory.prototype.clonePolyline = function (polyline) { 100 92 var geodesic = polyline.geodesic; 101 93 var strokeColor = polyline.strokeColor; 102 94 var strokeOpacity = polyline.strokeOpacity; 103 95 var strokeWeight = polyline.strokeWeight; 104 var clone_path = clonePath(path); 105 //var editable = rect.editable; 106 96 //var clone_path = clonePath(path); 97 98 var clone_path = null; 99 100 var JSONSave = typeof polyline.getPath !== "function"; 101 //console.log(JSONSave) 102 if(JSONSave){ 103 var path = polyline.latLngs.j[0].j; 104 clone_path = path; 105 106 } else{ 107 var path = polyline.getPath(); 108 clone_path = this.clonePath(path); 109 } 107 110 var clone_polyline = new google.maps.Polyline({ 108 111 geodesic: geodesic, … … 111 114 strokeWeight: strokeWeight, 112 115 path: clone_path, 113 draggable: draggableState,116 draggable: true, 114 117 editable: false 115 118 }); … … 120 123 } 121 124 122 123 MapEditorHistory.prototype.clonePolygon = function(polygon){ 124 var path = polygon.getPath(); 125 MapEditorHistory.prototype.clonePolygon = function (polygon) { 125 126 var geodesic = polygon.geodesic; 126 127 var strokeColor = polygon.strokeColor; … … 129 130 var fillColor = polygon.fillColor; 130 131 var fillOpacity = polygon.fillOpacity; 131 var clone_path = clonePath(path); 132 //var editable = rect.editable; 133 132 133 var clone_path = null; 134 var JSONSave = typeof polygon.getPath !== "function"; 135 //console.log(JSONSave) 136 if(JSONSave){ 137 var path = polygon.latLngs.j[0].j; 138 clone_path = path; 139 140 } else{ 141 var path = polygon.getPath(); 142 clone_path = this.clonePath(path); 143 console.log(path); 144 } 134 145 var clone_polygon = new google.maps.Polygon({ 135 146 geodesic: geodesic, … … 140 151 fillOpacity: fillOpacity, 141 152 path: clone_path, 142 draggable: draggableState,153 draggable: true, 143 154 editable: false 144 155 }); 145 146 156 clone_polygon.type = google.maps.drawing.OverlayType.POLYGON; 147 148 157 return clone_polygon; 149 158 } 150 159 151 MapEditorHistory.prototype.cloneRectangle = function (rect){160 MapEditorHistory.prototype.cloneRectangle = function (rect) { 152 161 var strokeColor = rect.strokeColor; 153 162 var strokeOpacity = rect.strokeOpacity; … … 155 164 var fillColor = rect.fillColor; 156 165 var fillOpacity = rect.fillOpacity; 157 var bounds = rect.getBounds();166 //var bounds = rect.getBounds(); 158 167 var type = rect.type; 159 //var editable = rect.editable; 160 168 169 var bounds = null; 170 171 var JSONSave = typeof rect.getBounds !== "function"; 172 173 if(JSONSave){ 174 var north = rect.bounds.north; 175 var south = rect.bounds.south; 176 var east = rect.bounds.east; 177 var west = rect.bounds.west; 178 if (!isNaN(north) && !isNaN(south) && !isNaN(west) && !isNaN(east)) { 179 var NE = new google.maps.LatLng(north, east); 180 var SW = new google.maps.LatLng(south, west); 181 bounds = new google.maps.LatLngBounds(SW, NE); 182 } 183 } else { 184 bounds = rect.getBounds(); 185 } 161 186 var clone_rect = new google.maps.Rectangle({ 162 187 strokeColor: strokeColor, … … 166 191 fillOpacity: fillOpacity, 167 192 bounds: bounds, 168 draggable: draggableState,193 draggable: true, 169 194 editable: false, 170 195 type: type … … 172 197 173 198 clone_rect.type = google.maps.drawing.OverlayType.RECTANGLE; 174 175 199 return clone_rect; 176 200 } 177 201 178 MapEditorHistory.prototype.cloneCircle = function (circ){202 MapEditorHistory.prototype.cloneCircle = function (circ) { 179 203 var strokeColor = circ.strokeColor; 180 204 var strokeOpacity = circ.strokeOpacity; … … 184 208 var center = circ.center; 185 209 var radius = circ.radius; 186 //var editable = rect.editable; 187 210 188 211 var clone_circ = new google.maps.Circle({ 189 212 strokeColor: strokeColor, … … 194 217 center: center, 195 218 radius: radius, 196 draggable: draggableState,219 draggable: true, 197 220 editable: false 198 221 }); … … 203 226 } 204 227 205 MapEditorHistory.prototype.cloneMarker = function(marker){ 206 var position = marker.getPosition(); 228 MapEditorHistory.prototype.cloneMarker = function (marker) { 207 229 var anchorPoint = marker.anchorPoint; 230 var JSONSave = typeof marker.getPosition !== "function"; 231 if(JSONSave){ 232 var position = marker.position; 233 } else{ 234 var position = marker.getPosition(); 235 } 208 236 var clone_marker = new google.maps.Marker({ 209 237 anchorPoint: anchorPoint, 210 238 position: position, 211 239 clickable: true, 212 draggable: draggableState,240 draggable: true, 213 241 editable: false 214 242 }) … … 218 246 } 219 247 220 MapEditorHistory.prototype.cloneShape = function (shape){248 MapEditorHistory.prototype.cloneShape = function (shape) { 221 249 if (shape.type === google.maps.drawing.OverlayType.POLYLINE) { 222 letclone_polyline = this.clonePolyline(shape);250 var clone_polyline = this.clonePolyline(shape); 223 251 return clone_polyline; 224 252 } else if (shape.type === google.maps.drawing.OverlayType.POLYGON) { 225 letclone_polygon = this.clonePolygon(shape);253 var clone_polygon = this.clonePolygon(shape); 226 254 return clone_polygon; 227 255 } else if (shape.type === google.maps.drawing.OverlayType.RECTANGLE) { 228 letclone_rect = this.cloneRectangle(shape);256 var clone_rect = this.cloneRectangle(shape); 229 257 return clone_rect; 230 258 231 259 } else if (shape.type === google.maps.drawing.OverlayType.CIRCLE) { 232 letclone_circ = this.cloneCircle(shape);260 var clone_circ = this.cloneCircle(shape); 233 261 return clone_circ; 234 262 235 263 } else { 236 letclone_marker = this.cloneMarker(shape);264 var clone_marker = this.cloneMarker(shape); 237 265 return clone_marker; 238 266 } 239 267 } 240 268 241 MapEditorHistory.prototype.overlayItemIsShape = function (overlay_item){269 MapEditorHistory.prototype.overlayItemIsShape = function (overlay_item) { 242 270 var type = overlay_item.type; 243 271 … … 249 277 return is_shape; 250 278 } 251 MapEditorHistory.prototype.historyOverlayPush = function(){ 252 if (this.cycleComplete) { 253 var overlays_copy = []; 254 for (var i = 0; i < overlays.length; i++) { 255 let clone_shape = this.cloneShape(overlays[i]); 256 257 if (this.overlayItemIsShape(clone_shape)) { 258 addShapeListeners(clone_shape, null); // don't have an overlay event! 259 } else { 260 addMarkerListeners(clone_shape, null); // don't have an overlay event! 261 } 262 overlays_copy[i] = clone_shape; 263 } 264 undoneOverlays = []; 279 280 */ 281 282 MapEditorHistory.prototype.historyOverlayPush = function () { 283 284 285 if (this.cycleCompvare) { 286 287 var overlays_copy = []; 288 for (var i = 0; i < this.mapEditor.overlays.length; i++) { 289 var clone_shape = ShapesUtil.cloneShape(this.mapEditor.overlays[i]); 290 if (ShapesUtil.overlayItemIsShape(clone_shape)) { 291 this.mapEditor.addShapeListeners(clone_shape, null); // don't have an overlay event! 292 } else { 293 this.mapEditor.addMarkerListeners(clone_shape, null); // don't have an overlay event! 294 } 295 overlays_copy[i] = clone_shape; 296 } 297 this.undoneOverlays = []; 265 298 this.prevOverlays.push(overlays_copy); 266 299 } 267 300 268 cycleComplete = false; 269 } 270 271 MapEditorHistory.prototype.presentOverlayPush = function(){ 301 this.cycleCompvare = false; 302 } 303 304 MapEditorHistory.prototype.presentOverlayPush = function () { 305 // console.log("presentOverlayPush"); 306 272 307 this.presentOverlays = []; 273 308 var overlays_copy = []; 274 for (var i = 0; i < overlays.length; i++) {275 let clone_shape = this.cloneShape(overlays[i]);276 if ( this.overlayItemIsShape(clone_shape)) {277 addShapeListeners(clone_shape, null); // don't have an overlay event!309 for (var i = 0; i < this.mapEditor.overlays.length; i++) { 310 var clone_shape = ShapesUtil.cloneShape(this.mapEditor.overlays[i]); 311 if (ShapesUtil.overlayItemIsShape(clone_shape)) { 312 this.mapEditor.addShapeListeners(clone_shape, null); // don't have an overlay event! 278 313 } else { 279 this. addMarkerListeners(clone_shape, null); // don't have an overlay event!314 this.mapEditor.addMarkerListeners(clone_shape, null); // don't have an overlay event! 280 315 } 281 316 overlays_copy[i] = clone_shape; 282 317 } 283 318 this.presentOverlays.push(overlays_copy); 284 cycleComplete = true; 285 286 } 287 288 MapEditorHistory.prototype.undoneOverlaysPush = function(){ 289 presentOverlayPush 290 var conditionUndone = presentOverlays[presentOverlays.length - 1] !== undefined; 319 this.cycleCompvare = true; 320 321 322 } 323 324 MapEditorHistory.prototype.undoneOverlaysPush = function () { 325 326 var conditionUndone = this.presentOverlays[this.presentOverlays.length - 1] !== undefined; 291 327 292 328 if (conditionUndone) { 293 let overlays_copy = [];294 for (var i = 0; i < presentOverlays[0].length; i++) {295 var clone_shape = cloneShape(presentOverlays[0][i]);296 if (overlayItemIsShape(clone_shape)) {297 addShapeListeners(clone_shape, null); // don't have an overlay event!298 } else {299 addMarkerListeners(clone_shape, null); // don't have an overlay event!300 }301 overlays_copy[i] = clone_shape;302 }303 undoneOverlays.push(overlays_copy);304 }305 306 var conditionPresent = prevOverlays[prevOverlays.length - 1] !== undefined;307 308 if (conditionPresent) {309 presentOverlays = [];310 var overlays_copy = [];311 for (var i = 0; i < prevOverlays[prevOverlays.length - 1].length; i++) {312 let clone_shape = cloneShape(prevOverlays[prevOverlays.length - 1][i]);313 if (overlayItemIsShape(clone_shape)) {314 addShapeListeners(clone_shape, null); // don't have an overlay event!315 } else {316 addMarkerListeners(clone_shape, null); // don't have an overlay event!317 }318 overlays_copy[i] = clone_shape;319 }320 presentOverlays.push(overlays_copy);321 }322 }323 324 325 MapEditorHistory.prototype.undoneOverlaysPush = function() {326 327 let conditionUndone = this.presentOverlays[this.presentOverlays.length - 1] !== undefined;328 329 if (conditionUndone) {330 329 var overlays_copy = []; 331 330 for (var i = 0; i < this.presentOverlays[0].length; i++) { 332 let clone_shape = this.cloneShape(this.presentOverlays[0][i]);333 if ( this.overlayItemIsShape(clone_shape)) {334 addShapeListeners(clone_shape, null); // don't have an overlay event!335 } else { 336 addMarkerListeners(clone_shape, null); // don't have an overlay event!331 var clone_shape = ShapesUtil.cloneShape(this.presentOverlays[0][i]); 332 if (ShapesUtil.overlayItemIsShape(clone_shape)) { 333 this.mapEditor.addShapeListeners(clone_shape, null); // don't have an overlay event! 334 } else { 335 this.mapEditor.addMarkerListeners(clone_shape, null); // don't have an overlay event! 337 336 } 338 337 overlays_copy[i] = clone_shape; … … 341 340 } 342 341 343 letconditionPresent = this.prevOverlays[this.prevOverlays.length - 1] !== undefined;342 var conditionPresent = this.prevOverlays[this.prevOverlays.length - 1] !== undefined; 344 343 345 344 if (conditionPresent) { 346 345 this.presentOverlays = []; 347 346 var overlays_copy = []; 348 for ( leti = 0; i < this.prevOverlays[this.prevOverlays.length - 1].length; i++) {349 var clone_shape = this.cloneShape(this.prevOverlays[this.prevOverlays.length - 1][i]);350 if ( this.overlayItemIsShape(clone_shape)) {351 addShapeListeners(clone_shape, null); // don't have an overlay event!352 } else { 353 addMarkerListeners(clone_shape, null); // don't have an overlay event!347 for (var i = 0; i < this.prevOverlays[this.prevOverlays.length - 1].length; i++) { 348 var clone_shape = cloneShape(this.prevOverlays[this.prevOverlays.length - 1][i]); 349 if (ShapesUtil.overlayItemIsShape(clone_shape)) { 350 this.mapEditor.addShapeListeners(clone_shape, null); // don't have an overlay event! 351 } else { 352 this.mapEditor.addMarkerListeners(clone_shape, null); // don't have an overlay event! 354 353 } 355 354 overlays_copy[i] = clone_shape; … … 359 358 } 360 359 360 MapEditorHistory.prototype.undoneOverlaysPush = function () { 361 362 var conditionUndone = this.presentOverlays[this.presentOverlays.length - 1] !== undefined; 363 364 if (conditionUndone) { 365 var overlays_copy = []; 366 for (var i = 0; i < this.presentOverlays[0].length; i++) { 367 var clone_shape = ShapesUtil.cloneShape(this.presentOverlays[0][i]); 368 if (ShapesUtil.overlayItemIsShape(clone_shape)) { 369 this.mapEditor.addShapeListeners(clone_shape, null); // don't have an overlay event! 370 } else { 371 this.mapEditor.addMarkerListeners(clone_shape, null); // don't have an overlay event! 372 } 373 overlays_copy[i] = clone_shape; 374 } 375 this.undoneOverlays.push(overlays_copy); 376 } 377 378 var conditionPresent = this.prevOverlays[this.prevOverlays.length - 1] !== undefined; 379 380 if (conditionPresent) { 381 this.presentOverlays = []; 382 var overlays_copy = []; 383 for (var i = 0; i < this.prevOverlays[this.prevOverlays.length - 1].length; i++) { 384 var clone_shape = ShapesUtil.cloneShape(this.prevOverlays[this.prevOverlays.length - 1][i]); 385 if (ShapesUtil.overlayItemIsShape(clone_shape)) { 386 this.mapEditor.addShapeListeners(clone_shape, null); // don't have an overlay event! 387 } else { 388 this.mapEditor.addMarkerListeners(clone_shape, null); // don't have an overlay event! 389 } 390 overlays_copy[i] = clone_shape; 391 } 392 this.presentOverlays.push(overlays_copy); 393 } 394 }
Note:
See TracChangeset
for help on using the changeset viewer.