Ignore:
Timestamp:
2019-01-31T17:03:19+13:00 (5 years ago)
Author:
ak19
Message:

Work to eliminate a undo history bug, and fixed the selection issue.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gs3-extensions/map-editor/DrawingManager/historyManager.js

    r32724 r32732  
    22var presentOverlays = [];
    33var undoneOverlays = [];
    4 var enableSelectionFeature = false;
     4var cycleComplete = true;
    55
    66function undo() {
    7    
     7
    88    for (var i = 0; i < overlays.length; i++) {
    99        overlays[i].setMap(null);
    10 
    1110    }
    1211    if (prevOverlays.length != 0) {
     
    1514        undoneOverlaysPush();
    1615        var prev_overlay = prevOverlays.pop();
    17        
    18         if(prev_overlay.length > 0) {
     16
     17        if (prev_overlay.length > 0) {
    1918            for (var i = 0; i < prev_overlay.length; i++) {
    20             overlays[i] = prev_overlay[i];
    21             overlays[i].setMap(map);
    22             }
    23         }
    24        
    25 
    26     }
    27 
    28     //Deactivated at the moment
    29     //if (enableSelectionFeature) {
    30     //  selectedShapes = [];
    31     //  var i = 0;
    32     //  var lastEntry = prevOverlays[prevOverlays.length - 1][i];
    33     //  console.log(prevOverlays[prevOverlays.length - 1].length);
    34     //
    35     //  for (var i = 0; i < lastEntry.length; i++) {
    36     //      selectedShapes.push(prevOverlays)
    37     //      console.log("comes here");
    38     //  }
    39     //
    40     //}
     19                overlays[i] = prev_overlay[i];
     20                overlays[i].setMap(map);
     21                overlays[i].draggable = draggableState;
     22            }
     23        }
     24    }
    4125}
    4226
    4327function redo() {
    44    
     28
    4529    if (undoneOverlays.length != 0) {
    4630        selectedShapes = [];
     
    4832            overlays[i].setMap(null);
    4933        }
     34
    5035        overlays = [];
    5136        var lastEntry = undoneOverlays[undoneOverlays.length - 1];
     
    5338            overlays[i] = lastEntry[i];
    5439            overlays[i].setMap(map);
    55         }
    56         var conditionPrevious = presentOverlays[presentOverlays.length - 1] !== undefined ;
    57        
    58         if (conditionPrevious){
    59             prevOverlays.push(presentOverlays[0]);
    60         }
    61        
     40            overlays[i].draggable = draggableState;
     41        }
     42
     43        var conditionPrevious = presentOverlays[0];
     44        if (conditionPrevious !== undefined) {
     45            if (conditionPrevious.length == 0) {
     46                prevOverlays.push(presentOverlays[0]);
     47            } else {
     48                var overlays_copy = [];
     49                for (var i = 0; i < presentOverlays[0].length; i++) {
     50                    var clone_shape = cloneShape(presentOverlays[0][i]);
     51                    if (overlayItemIsShape(clone_shape)) {
     52                        addShapeListeners(clone_shape, null);
     53                    } else {
     54                        addMarkerListeners(clone_shape, null);
     55                    }
     56                    overlays_copy[i] = clone_shape;
     57                }
     58                prevOverlays.push(overlays_copy);
     59            }
     60        }
    6261        presentOverlays = [];
    63         //console.log("last undone", undoneOverlays[undoneOverlays.length -1]);
    6462        presentOverlays.push(undoneOverlays[undoneOverlays.length - 1]);
    6563        undoneOverlays.pop();
    66 
    67     }
    68 
     64    }
    6965}
    7066
     
    10096            strokeWeight: strokeWeight,
    10197            path: clone_path,
    102             draggable: true,
     98            draggable: draggableState,
    10399            editable: false
    104100        });
     
    128124            fillOpacity: fillOpacity,
    129125            path: clone_path,
    130             draggable: true,
     126            draggable: draggableState,
    131127            editable: false
    132128        });
     
    154150            fillOpacity: fillOpacity,
    155151            bounds: bounds,
    156             draggable: true,
     152            draggable: draggableState,
    157153            editable: false,
    158154            type: type
     
    182178            center: center,
    183179            radius: radius,
    184             draggable: true,
     180            draggable: draggableState,
    185181            editable: false
    186182        });
     
    194190    var position = marker.getPosition();
    195191    var anchorPoint = marker.anchorPoint;
    196     var clone_marker  = new google.maps.Marker({
    197         anchorPoint: anchorPoint,
    198         position : position,
    199         clickable: true,
    200         draggable: true,
    201         editable: false
    202     })
    203     clone_marker.type = google.maps.drawing.OverlayType.MARKER;
    204    
     192    var clone_marker = new google.maps.Marker({
     193            anchorPoint: anchorPoint,
     194            position: position,
     195            clickable: true,
     196            draggable: draggableState,
     197            editable: false
     198        })
     199        clone_marker.type = google.maps.drawing.OverlayType.MARKER;
     200
    205201    return clone_marker;
    206202}
     
    225221        return clone_marker;
    226222    }
    227     console.log(cloneShape);
    228223}
    229224
     
    240235
    241236function historyOverlayPush() {
    242     if(undoneOverlays.length > 0) {
    243         for(var i = 0; i < undoneOverlays.length; i++) {
    244            
    245             entryType.pop();
    246         }       
    247     }
    248     undoneOverlays = [];
    249     //if(resizeEntry){
    250             //prevOverlays.push(presentOverlays[0]);
    251            
    252     //} else {
     237    if (cycleComplete) {
    253238        var overlays_copy = [];
    254239        for (var i = 0; i < overlays.length; i++) {
    255240            var clone_shape = cloneShape(overlays[i]);
    256             if(resizeEntry) {
    257                 //console.log("hey lol");
    258                 clone_shape = cloneShape(presentOverlays[0][i]);
    259             }
     241
    260242            if (overlayItemIsShape(clone_shape)) {
    261243                addShapeListeners(clone_shape, null); // don't have an overlay event!
     
    265247            overlays_copy[i] = clone_shape;
    266248        }
    267         prevOverlays.push(overlays_copy);       
    268     //}
    269 }
    270 
     249        undoneOverlays = [];
     250        prevOverlays.push(overlays_copy);
     251    }
     252
     253    cycleComplete = false;
     254}
    271255function presentOverlayPush() {
    272    
    273     //clean the entry type array
    274 
    275     if(resizeEntry) {
    276         entryType.push("resize");
    277     } else {
    278         entryType.push("not resize");
    279     }
    280    
     256
     257    OVbeforeClearing = overlays;
     258    PObeforeClearing = presentOverlays;
    281259    presentOverlays = [];
    282260    var overlays_copy = [];
     
    291269    }
    292270    presentOverlays.push(overlays_copy);
     271    cycleComplete = true;
     272
    293273}
    294274
    295275function undoneOverlaysPush() {
    296    
     276
    297277    var conditionUndone = presentOverlays[presentOverlays.length - 1] !== undefined;
    298278
    299279    if (conditionUndone) {
    300         undoneOverlays.push(presentOverlays[0]);
    301     }
    302     presentOverlays = [];
     280        var overlays_copy = [];
     281        for (var i = 0; i < presentOverlays[0].length; i++) {
     282            var clone_shape = cloneShape(presentOverlays[0][i]);
     283            if (overlayItemIsShape(clone_shape)) {
     284                addShapeListeners(clone_shape, null); // don't have an overlay event!
     285            } else {
     286                addMarkerListeners(clone_shape, null); // don't have an overlay event!
     287            }
     288            overlays_copy[i] = clone_shape;
     289        }
     290        undoneOverlays.push(overlays_copy);
     291    }
     292
    303293    var conditionPresent = prevOverlays[prevOverlays.length - 1] !== undefined;
    304294
    305295    if (conditionPresent) {
    306         presentOverlays.push(prevOverlays[prevOverlays.length - 1]);
    307     }
    308 }
     296        presentOverlays = [];
     297        var overlays_copy = [];
     298        for (var i = 0; i < prevOverlays[prevOverlays.length - 1].length; i++) {
     299            var clone_shape = cloneShape(prevOverlays[prevOverlays.length - 1][i]);
     300            if (overlayItemIsShape(clone_shape)) {
     301                addShapeListeners(clone_shape, null); // don't have an overlay event!
     302            } else {
     303                addMarkerListeners(clone_shape, null); // don't have an overlay event!
     304            }
     305            overlays_copy[i] = clone_shape;
     306        }
     307        presentOverlays.push(overlays_copy);
     308    }
     309}
Note: See TracChangeset for help on using the changeset viewer.