view app/view/panel/Ort.js @ 1420:48c9c7b0ceef 2.6.1

make map panel collapsable in Stammdaten form
author Michael Stanko <mstanko@bfs.de>
date Wed, 05 Apr 2017 16:02:45 +0200
parents b58868c47f02
children
line wrap: on
line source
Ext.define('Lada.view.panel.Ort', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.ortpanel',

    requires: [
        'Lada.view.panel.Map',
        'Lada.view.grid.Orte'
    ],

    width: '100%',
    //height: 200,

    layout: {
        type: 'border'
    },
    toolbarPos: 'top',

    editableGrid: true,

    initComponent: function() {
        var i18n = Lada.getApplication().bundle;
 
        // Different Layout of toolbar depending on the bars position.
        if (this.toolbarPos == 'top') {
            this.dockedItems = [{
                xtype: 'toolbar',
                dock: 'top',
                items: [{
                    xtype: 'tbtext',
                    text: i18n.getMsg('orte.gridTitle')
                },
                '->',
                {
                    text: i18n.getMsg('map.button.add'),
                    icon: 'resources/img/list-add.png',
                    action: 'addMap',
                    disabled: true // disabled on startup, will be enabled by setStore
                }, {
                    text: i18n.getMsg('orte.button.add'),
                    icon: 'resources/img/list-add.png',
                    action: 'add',
                    disabled: true // disabled on startup, will be enabled by setStore
                }, {
                    text: i18n.getMsg('orte.button.delete'),
                    icon: 'resources/img/list-remove.png',
                    action: 'delete',
                    disabled: true // disabled on startup, will be enabled by controller if necessary
                }]
            }];
        }
        else {
            this.dockedItems = [{
                xtype: 'toolbar',
                dock: this.toolbarPos,
                items: [ '->',
                {
                    text: i18n.getMsg('map.button.add'),
                    icon: 'resources/img/list-add.png',
                    action: 'addMap',
                    disabled: true // disabled on startup, will be enabled by setStore
                }, {
                    text: i18n.getMsg('orte.button.add'),
                    icon: 'resources/img/list-add.png',
                    action: 'add',
                    disabled: true // disabled on startup, will be enabled by setStore
                }]
            }];
        }

        this.items = [{
            xtype: 'ortstammdatengrid',
            width: '60%',
            editableGrid: this.editableGrid,
            region: 'center'
        }, {
            xtype: 'map',
            flex: 1,
            collapsible: true,
            region: 'east',
            layout: 'border',
            title: i18n.getMsg('map.title'),
            externalOrteStore: true,
            listeners: {
                beforecollapse: function() {
                    var c = this.map.getControlsByClass('OpenLayers.Control.ScaleLine');
                    this.map.removeControl(c[0]);
                    for (i = 0; i < this.map.layers.length; i++) {
                        this.map.layers[i].setVisibility(false);
                    }
                },
                expand: function() {
                    this.map.addControl(new OpenLayers.Control.ScaleLine());
                    for (i = 0; i < this.map.layers.length; i++) {
                        this.map.layers[i].setVisibility(true);
                    }
                }
            }
        }];
        this.callParent(arguments);
    },

    afterRender: function() {
        this.superclass.afterRender.apply(this, arguments);
        this.down('map').map.zoomTo(6);
    },

    setStore: function(store) {
        var me = this;
        var osg = this.down('ortstammdatengrid');
        var map = this.down('map');
        osg.setLoading(true);
        map.setLoading(true);
        var ortstore = store;
        if (!ortstore) {
            ortstore = Ext.data.StoreManager.get('orte');
        }
        ortstore.clearFilter(true);
        osg.setStore(ortstore);
        map.addLocations(ortstore);
        me.down('toolbar button[action=add]').enable();
        me.down('toolbar button[action=addMap]').enable();
        me.connectListeners();
    },

    getStore: function() {
        return this.down('grid').getStore();
    },

    connectListeners: function() {
        var osg = this.down('ortstammdatengrid');
        var map = this.down('map');
        map.addListener('featureselected', osg.selectOrt, osg);
        osg.addListener('select', map.selectFeature, map);
    }
});

http://lada.wald.intevation.org