- Timestamp:
- 2019-02-12T12:44:28+13:00 (5 years ago)
- Location:
- main/trunk/greenstone3/web/interfaces/default/js
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/map-scripts-editor-history.js
r32766 r32769 1 var prevOverlays = [];2 var presentOverlays = [];3 var undoneOverlays = [];4 var cycleComplete = true;1 //var prevOverlays = []; 2 //var presentOverlays = []; 3 //var undoneOverlays = []; 4 //var cycleComplete = true; 5 5 6 6 function MapEditorHistory() … … 12 12 } 13 13 14 MapEditorHistory.prototype.undo = function( overlays) {15 for ( vari = 0; i < overlays.length; i++) {14 MapEditorHistory.prototype.undo = function() { 15 for (let i = 0; i < overlays.length; i++) { 16 16 overlays[i].setMap(null); 17 17 } … … 34 34 35 35 36 function undo() { 37 38 for (var i = 0; i < overlays.length; i++) { 39 overlays[i].setMap(null); 40 } 41 if (prevOverlays.length != 0) { 36 37 38 MapEditorHistory.prototype.redo = function() { 39 40 if (this.undoneOverlays.length != 0) { 42 41 selectedShapes = []; 42 for (let i = 0; i < overlays.length; i++) { 43 overlays[i].setMap(null); 44 } 45 43 46 overlays = []; 44 undoneOverlaysPush(); 45 var prev_overlay = prevOverlays.pop(); 46 47 if (prev_overlay.length > 0) { 48 for (var i = 0; i < prev_overlay.length; i++) { 49 overlays[i] = prev_overlay[i]; 50 overlays[i].setMap(map); 51 overlays[i].draggable = draggableState; 52 } 53 } 54 } 55 } 56 57 function redo() { 58 59 if (undoneOverlays.length != 0) { 60 selectedShapes = []; 61 for (var i = 0; i < overlays.length; i++) { 62 overlays[i].setMap(null); 63 } 64 65 overlays = []; 66 var lastEntry = undoneOverlays[undoneOverlays.length - 1]; 67 for (var i = 0; i < lastEntry.length; i++) { 47 var lastEntry = this.undoneOverlays[this.undoneOverlays.length - 1]; 48 for (let i = 0; i < lastEntry.length; i++) { 68 49 overlays[i] = lastEntry[i]; 69 50 overlays[i].setMap(map); … … 71 52 } 72 53 73 var conditionPrevious = presentOverlays[0];54 var conditionPrevious = this.presentOverlays[0]; 74 55 if (conditionPrevious !== undefined) { 75 56 if (conditionPrevious.length == 0) { 76 prevOverlays.push(presentOverlays[0]);57 this.prevOverlays.push(this.presentOverlays[0]); 77 58 } else { 78 59 var overlays_copy = []; 79 for ( var i = 0; i <presentOverlays[0].length; i++) {80 var clone_shape = cloneShape(presentOverlays[0][i]);81 if ( overlayItemIsShape(clone_shape)) {60 for (let i = 0; i < this.presentOverlays[0].length; i++) { 61 var clone_shape = this.cloneShape(this.presentOverlays[0][i]); 62 if (this.overlayItemIsShape(clone_shape)) { 82 63 addShapeListeners(clone_shape, null); 83 64 } else { … … 86 67 overlays_copy[i] = clone_shape; 87 68 } 88 prevOverlays.push(overlays_copy); 89 } 90 } 91 presentOverlays = []; 92 presentOverlays.push(undoneOverlays[undoneOverlays.length - 1]); 93 undoneOverlays.pop(); 94 } 95 } 96 97 function clonePath(path) { 69 this.prevOverlays.push(overlays_copy); 70 } 71 } 72 this.presentOverlays = []; 73 this.presentOverlays.push(this.undoneOverlays[this.undoneOverlays.length - 1]); 74 this.undoneOverlays.pop(); 75 } 76 } 77 78 79 80 81 MapEditorHistory.prototype.clonePath = function(path){ 98 82 var clone_path = []; 99 83 … … 111 95 } 112 96 113 function clonePolyline(polyline) { 97 98 MapEditorHistory.prototype.clonePolyline = function(polyline){ 114 99 var path = polyline.getPath(); 115 100 var geodesic = polyline.geodesic; … … 135 120 } 136 121 137 function clonePolygon(polygon) { 122 123 MapEditorHistory.prototype.clonePolygon = function(polygon){ 138 124 var path = polygon.getPath(); 139 125 var geodesic = polygon.geodesic; … … 163 149 } 164 150 165 function cloneRectangle(rect){151 MapEditorHistory.prototype.cloneRectangle = function(rect){ 166 152 var strokeColor = rect.strokeColor; 167 153 var strokeOpacity = rect.strokeOpacity; … … 190 176 } 191 177 192 function cloneCircle(circ){178 MapEditorHistory.prototype.cloneCircle = function(circ){ 193 179 var strokeColor = circ.strokeColor; 194 180 var strokeOpacity = circ.strokeOpacity; … … 217 203 } 218 204 219 function cloneMarker(marker){205 MapEditorHistory.prototype.cloneMarker = function(marker){ 220 206 var position = marker.getPosition(); 221 207 var anchorPoint = marker.anchorPoint; … … 232 218 } 233 219 234 function cloneShape(shape){220 MapEditorHistory.prototype.cloneShape = function(shape){ 235 221 if (shape.type === google.maps.drawing.OverlayType.POLYLINE) { 236 var clone_polyline =clonePolyline(shape);222 let clone_polyline = this.clonePolyline(shape); 237 223 return clone_polyline; 238 224 } else if (shape.type === google.maps.drawing.OverlayType.POLYGON) { 239 var clone_polygon =clonePolygon(shape);225 let clone_polygon = this.clonePolygon(shape); 240 226 return clone_polygon; 241 227 } else if (shape.type === google.maps.drawing.OverlayType.RECTANGLE) { 242 var clone_rect =cloneRectangle(shape);228 let clone_rect = this.cloneRectangle(shape); 243 229 return clone_rect; 244 230 245 231 } else if (shape.type === google.maps.drawing.OverlayType.CIRCLE) { 246 var clone_circ =cloneCircle(shape);232 let clone_circ = this.cloneCircle(shape); 247 233 return clone_circ; 248 234 249 235 } else { 250 var clone_marker =cloneMarker(shape);236 let clone_marker = this.cloneMarker(shape); 251 237 return clone_marker; 252 238 } 253 239 } 254 240 255 function overlayItemIsShape(overlay_item){241 MapEditorHistory.prototype.overlayItemIsShape = function(overlay_item){ 256 242 var type = overlay_item.type; 257 243 … … 263 249 return is_shape; 264 250 } 265 266 function historyOverlayPush() { 267 if (cycleComplete) { 251 MapEditorHistory.prototype.historyOverlayPush = function(){ 252 if (this.cycleComplete) { 268 253 var overlays_copy = []; 269 254 for (var i = 0; i < overlays.length; i++) { 270 var clone_shape =cloneShape(overlays[i]);271 272 if ( overlayItemIsShape(clone_shape)) {255 let clone_shape = this.cloneShape(overlays[i]); 256 257 if (this.overlayItemIsShape(clone_shape)) { 273 258 addShapeListeners(clone_shape, null); // don't have an overlay event! 274 259 } else { … … 278 263 } 279 264 undoneOverlays = []; 280 prevOverlays.push(overlays_copy);265 this.prevOverlays.push(overlays_copy); 281 266 } 282 267 283 268 cycleComplete = false; 284 269 } 285 function presentOverlayPush() { 286 287 OVbeforeClearing = overlays; 288 PObeforeClearing = presentOverlays; 289 presentOverlays = []; 270 271 MapEditorHistory.prototype.presentOverlayPush = function(){ 272 this.presentOverlays = []; 290 273 var overlays_copy = []; 291 274 for (var i = 0; i < overlays.length; i++) { 292 var clone_shape =cloneShape(overlays[i]);293 if ( overlayItemIsShape(clone_shape)) {275 let clone_shape = this.cloneShape(overlays[i]); 276 if (this.overlayItemIsShape(clone_shape)) { 294 277 addShapeListeners(clone_shape, null); // don't have an overlay event! 295 278 } else { 296 addMarkerListeners(clone_shape, null); // don't have an overlay event!279 this.addMarkerListeners(clone_shape, null); // don't have an overlay event! 297 280 } 298 281 overlays_copy[i] = clone_shape; 299 282 } 300 presentOverlays.push(overlays_copy);283 this.presentOverlays.push(overlays_copy); 301 284 cycleComplete = true; 302 285 303 286 } 304 287 305 function undoneOverlaysPush(){306 288 MapEditorHistory.prototype.undoneOverlaysPush = function(){ 289 presentOverlayPush 307 290 var conditionUndone = presentOverlays[presentOverlays.length - 1] !== undefined; 308 291 309 292 if (conditionUndone) { 310 varoverlays_copy = [];293 let overlays_copy = []; 311 294 for (var i = 0; i < presentOverlays[0].length; i++) { 312 295 var clone_shape = cloneShape(presentOverlays[0][i]); … … 327 310 var overlays_copy = []; 328 311 for (var i = 0; i < prevOverlays[prevOverlays.length - 1].length; i++) { 329 varclone_shape = cloneShape(prevOverlays[prevOverlays.length - 1][i]);312 let clone_shape = cloneShape(prevOverlays[prevOverlays.length - 1][i]); 330 313 if (overlayItemIsShape(clone_shape)) { 331 314 addShapeListeners(clone_shape, null); // don't have an overlay event! … … 342 325 MapEditorHistory.prototype.undoneOverlaysPush = function() { 343 326 344 varconditionUndone = this.presentOverlays[this.presentOverlays.length - 1] !== undefined;327 let conditionUndone = this.presentOverlays[this.presentOverlays.length - 1] !== undefined; 345 328 346 329 if (conditionUndone) { 347 330 var overlays_copy = []; 348 331 for (var i = 0; i < this.presentOverlays[0].length; i++) { 349 var clone_shape =cloneShape(this.presentOverlays[0][i]);350 if ( overlayItemIsShape(clone_shape)) {332 let clone_shape = this.cloneShape(this.presentOverlays[0][i]); 333 if (this.overlayItemIsShape(clone_shape)) { 351 334 addShapeListeners(clone_shape, null); // don't have an overlay event! 352 335 } else { … … 358 341 } 359 342 360 varconditionPresent = this.prevOverlays[this.prevOverlays.length - 1] !== undefined;343 let conditionPresent = this.prevOverlays[this.prevOverlays.length - 1] !== undefined; 361 344 362 345 if (conditionPresent) { 363 346 this.presentOverlays = []; 364 347 var overlays_copy = []; 365 for ( vari = 0; i < this.prevOverlays[this.prevOverlays.length - 1].length; i++) {366 var clone_shape = cloneShape(this.prevOverlays[this.prevOverlays.length - 1][i]);367 if ( overlayItemIsShape(clone_shape)) {348 for (let i = 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)) { 368 351 addShapeListeners(clone_shape, null); // don't have an overlay event! 369 352 } else { -
main/trunk/greenstone3/web/interfaces/default/js/map-scripts-editor.js
r32766 r32769 176 176 if (resizable) { 177 177 if(dontResize == false){ 178 historyOverlayPush();178 mapEditorHistory.historyOverlayPush(); 179 179 } 180 180 … … 187 187 188 188 if (selectedShapes.length > 0) { 189 historyOverlayPush();189 mapEditorHistory.historyOverlayPush(); 190 190 } 191 191 } … … 193 193 function shapeSpecsChangeMU() { 194 194 if (selectedShapes.length > 0) { 195 presentOverlayPush();195 mapEditorHistory.presentOverlayPush (); 196 196 } 197 197 } … … 309 309 google.maps.event.addListener(drawingManager, 'overlaycomplete', function (e) { 310 310 allowDeselect = true; 311 historyOverlayPush();311 mapEditorHistory.historyOverlayPush(); 312 312 overlays.push(e.overlay); // store reference to added overlay 313 313 var newShape = e.overlay; 314 314 newShape.type = e.type; 315 presentOverlayPush();315 mapEditorHistory.presentOverlayPush(); 316 316 317 317 if (e.type !== google.maps.drawing.OverlayType.MARKER) { … … 348 348 document.addEventListener('keydown', function () { 349 349 if (event.code == 'KeyY' && (event.ctrlKey || event.metaKey) || (event.code == 'KeyZ' && event.code == 'ShiftLeft' && (event.ctrlKey || event.metaKey))) { 350 redo();350 mapEditorHistory.redo(); 351 351 } 352 352 if (event.code == 'KeyZ' && (event.ctrlKey || event.metaKey)) { 353 353 if (shiftKeyPressed == false) { 354 undo(); 355 mapEditorHistory.undo(overlays); // ***** when we only have MapEditorHistory as a class 354 //undo(); 355 mapEditorHistory.undo(); 356 //mapEditorHistory.undo(overlays, draggableState); // ***** when we only have MapEditorHistory as a class 356 357 //that.mapEditorHistory.undo(that.overlays); // ***** when we have both MapEditorHistory and MapEditor as classes 357 358 … … 436 437 google.maps.event.addListener(newShape, 'dragstart', function (e) { 437 438 beingDragged = true; 438 historyOverlayPush();439 mapEditorHistory.historyOverlayPush(); 439 440 440 441 }); … … 442 443 google.maps.event.addListener(newShape, 'dragend', function () { 443 444 beingDragged = false; 444 presentOverlayPush();445 mapEditorHistory.presentOverlayPush (); 445 446 allowDeselect = false; 446 447 }); … … 458 459 google.maps.event.addListener(newShape, 'dragstart', function (e) { 459 460 allowDeselect = false; 460 historyOverlayPush();461 mapEditorHistory.historyOverlayPush(); 461 462 }); 462 463 … … 465 466 google.maps.event.addListener(newShape, 'dragend', function () { 466 467 beingDragged = false; 467 presentOverlayPush();468 mapEditorHistory.presentOverlayPush (); 468 469 settingThePath(); 469 470 … … 475 476 google.maps.event.addListener(newShape, 'bounds_changed', function (e) { 476 477 if (beingDragged == false) { 477 presentOverlayPush();478 mapEditorHistory.presentOverlayPush (); 478 479 } 479 480 }); … … 485 486 } 486 487 if (e.vertex !== undefined || e.edge !== undefined) { 487 historyOverlayPush()488 mapEditorHistory.historyOverlayPush() 488 489 } 489 490 if (drawingManager.drawingMode == null) { … … 494 495 google.maps.event.addListener(newShape, 'mouseup', function (e) { 495 496 if (e.vertex !== undefined || e.edge !== undefined) { 496 presentOverlayPush()497 mapEditorHistory.presentOverlayPush () 497 498 } else { 498 499 //setSelection(newShape, e); … … 572 573 function setSelectedThickness(sWeight) { 573 574 if (selectedShapes.length > 0) { 574 // historyOverlayPush();575 //mapEditorHistory.historyOverlayPush(); 575 576 for (var i = 0; i < selectedShapes.length; i++) { 576 577 selectedShapes[i].set('strokeWeight', sWeight); … … 636 637 637 638 function printHistory() { 638 console.log("prev", prevOverlays);639 console.log("present ", presentOverlays);640 console.log("undone ", undoneOverlays);639 console.log("prev", mapEditorHistory.prevOverlays); 640 console.log("present ", mapEditorHistory.presentOverlays); 641 console.log("undone ", mapEditorHistory.undoneOverlays); 641 642 console.log(mouseState); 642 643 } … … 668 669 function deleteSelectedShape() { 669 670 //console.log("this fires"); 670 historyOverlayPush();671 mapEditorHistory.historyOverlayPush(); 671 672 for (var i = 0; i < selectedShapes.length; i++) { 672 673 selectedShapes[i].setMap(null); … … 680 681 selectedShapes = []; 681 682 //console.log("this fires"); 682 presentOverlayPush();683 mapEditorHistory.presentOverlayPush (); 683 684 } 684 685 … … 686 687 console.log(nId); 687 688 //console.log("this fires"); 688 historyOverlayPush();689 mapEditorHistory.historyOverlayPush(); 689 690 for (var i = 0; i < overlays.length; i++) { 690 691 overlays[i].setMap(null); … … 692 693 overlays = []; 693 694 //console.log("this fires"); 694 presentOverlayPush();695 } 695 mapEditorHistory.presentOverlayPush (); 696 }
Note:
See TracChangeset
for help on using the changeset viewer.