Changeset 1191

Show
Ignore:
Timestamp:
07/01/09 05:18:18 (4 years ago)
Author:
tschaub
Message:

When a view is configured to display the same layer twice, we need to take care with the record id, make a clone of the layer, and do the unset/set trick. This could all be improved with a clone method on the layer record.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer.js

    r1189 r1191  
    648648                var base; 
    649649                if (id >= 0) { 
    650                     record = store.getAt(id).copy(); 
    651  
    652                     layer = record.get("layer"); 
     650                    /** 
     651                     * If the same layer is added twice, it will get replaced 
     652                     * unless we give each record a unique id.  In addition, we 
     653                     * need to clone the layer so that the map doesn't assume 
     654                     * the layer has already been added.  Finally, we can't 
     655                     * simply set the record layer to the cloned layer because 
     656                     * record.set compares String(value) to determine equality. 
     657                     *  
     658                     * TODO: suggest record.clone 
     659                     */ 
     660                    Ext.data.Record.AUTO_ID++; 
     661                    record = store.getAt(id).copy(Ext.data.Record.AUTO_ID); 
     662                    layer = record.get("layer").clone(); 
     663                    record.set("layer", null); 
     664                    record.set("layer", layer); 
    653665                     
    654666                    // set layer max extent from capabilities 
     
    662674                    } 
    663675 
    664                     layer = layer.clone(); 
    665                     record.set("layer", null); //need to do this because record.set compares String(value) to determine equality (dumb) 
    666                     record.set("layer", layer); 
    667676 
    668677                    // set layer visibility from config