Changeset 1223

Show
Ignore:
Timestamp:
07/04/09 08:43:35 (4 years ago)
Author:
tschaub
Message:

fix up ordering when switching groups

Files:

Legend:

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

    r1222 r1223  
    216216        var nodeIndex = -1; 
    217217        var layer = this.item(index).layer; 
    218         var record, l
     218        var record
    219219        for(var i=count-1; i>=0; --i) { 
    220220            record = store.getAt(i); 
    221             l = record.get("layer"); 
    222221            if(l.displayInLayerSwitcher && 
    223                (record.get("group") == this.group || l === layer)) { 
     222               (record.get("group") == this.group)) { 
    224223                ++nodeIndex; 
    225224                if(index === nodeIndex) { 
     
    252251                var store = container.layerStore; 
    253252                var index = container.indexOf(node); 
    254                 var recIndex = container.nodeIndexToRecordIndex( 
    255                     container.indexOf(node) 
    256                 ); 
    257253                store.remove(record); 
    258254                node.remove(); 
    259  
     255                 
    260256                // TODO: record.clone() 
    261257                Ext.data.Record.AUTO_ID++; 
     
    266262 
    267263                record.set("group", container.group); 
    268                 store.insert(recIndex, [record]); 
     264 
     265                // TODO: if this is the only record of this group, recIndex is not determined 
     266                // this is a hack that works for two groups only 
     267                if (container.childNodes.length == 0) { 
     268                    if (tree.root.firstChild === container) { 
     269                        store.add([record]); 
     270                    } else { 
     271                        store.insert(0, [record]); 
     272                    } 
     273                } else { 
     274                    var sib = container.childNodes[index]; 
     275                    var offset = 1; 
     276                    if (!sib) { 
     277                        offset = 0; 
     278                        sib = container.lastChild; 
     279                    } 
     280                    var recIndex = store.findBy(function(rec) { 
     281                        return (rec.get("layer") === sib.layer); 
     282                    }) + offset; 
     283                    store.insert(recIndex, [record]); 
     284                } 
    269285            }, 0); 
    270286