Mercurial > lada > lada-client
view app/view/window/Ortszuordnung.js @ 1335:cba4e0b0e336
Fixed ort grid selection.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 03 Feb 2017 17:02:55 +0100 |
parents | 2c5d89886885 |
children | 1a2cd9bef6d7 |
line wrap: on
line source
/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=3) * and comes with ABSOLUTELY NO WARRANTY! Check out * the documentation coming with IMIS-Labordaten-Application for details. */ /** * Window to create/edit the Ort/Probe or Ort/Messprogramm Relation */ Ext.define('Lada.view.window.Ortszuordnung', { extend: 'Ext.window.Window', alias: 'widget.ortszuordnungwindow', requires: [ 'Lada.model.Ortszuordnung', 'Lada.model.OrtszuordnungMp', 'Lada.view.form.Ortszuordnung', 'Lada.view.form.Ortserstellung', 'Lada.view.panel.Map', 'Lada.view.grid.Orte' ], collapsible: true, maximizable: true, autoshow: true, layout: 'fit', constrain: true, probe: null, messprogramm: null, parentWindow: null, record: null, grid: null, /** * This function initialises the Window */ initComponent: function() { var i18n = Lada.getApplication().bundle; this.title = i18n.getMsg('ortszuordnung.window.title'); var recordtype; if (this.probe) { if (this.record) { // A probe record will be edited this.title = i18n.getMsg('ortszuordnung.window.title') + ' ' + i18n.getMsg('ortszuordnung.window.title2') + ' ' + i18n.getMsg('probe') + ' ' + this.probe.get('hauptprobenNr') + ' ' + i18n.getMsg('edit'); } else { // A new probe record will be created this.title = i18n.getMsg('ortszuordnung.window.title') + ' ' + i18n.getMsg('ortszuordnung.window.title2') + ' ' + i18n.getMsg('probe') + ' ' + this.probe.get('hauptprobenNr') + ' ' + i18n.getMsg('create'); } } else if (this.messprogramm) { if (this.record) { // A messprogramm record will be edited this.title = i18n.getMsg('ortszuordnung.window.title') + ' ' + i18n.getMsg('ortszuordnung.window.title2') + ' ' + i18n.getMsg('messprogramm') + ' ' + i18n.getMsg('edit'); } else { // A new messprogramm record will be created this.title = i18n.getMsg('ortszuordnung.window.title') + ' ' + i18n.getMsg('ortszuordnung.window.title2') + ' ' + i18n.getMsg('messprogramm') + ' ' + i18n.getMsg('create'); } } this.buttons = [{ text: i18n.getMsg('close'), scope: this, handler: this.close }]; this.width = 900; this.height = 465; this.bodyStyle = {background: '#fff'}; // add listeners to change the window appearence when it becomes inactive this.on({ activate: function(){ this.getEl().removeCls('window-inactive'); }, deactivate: function(){ this.getEl().addCls('window-inactive'); } }); this.items = [{ layout: 'border', bodyStyle: {background: '#fff'}, border: 0, items: [{ xtype: 'map', region: 'center', layout: 'border', margin: '13, 5, 10, 5', externalOrteStore: true }, { xtype: 'ortszuordnungform', region: 'east', type: this.probe? 'probe': 'mpr' }, { region: 'south', border: 0, layout: 'fit', name: 'ortgrid', hidden: true, height: 240, items: [{ xtype: 'ortstammdatengrid' }], dockedItems: [{ xtype: 'toolbar', dock: 'bottom', items: [{ xtype: 'textfield', name: 'search', labelWidth: 50, enableKeyEvents: true, fieldLabel: i18n.getMsg('ortszuordnung.ortsuche'), }, '->', { text: i18n.getMsg('orte.new'), action: 'createort' }, { text: i18n.getMsg('orte.frommap'), action: 'frommap' }, { text: i18n.getMsg('orte.clone'), action: 'clone', disabled : true }] }] }] }]; this.callParent(arguments); }, /** * Initialise the Data of this Window */ initData: function() { var me = this; if (!this.record) { if (this.probe) { this.record = Ext.create('Lada.model.Ortszuordnung'); this.record.set('probeId', this.probe.get('id')); } else { this.record = Ext.create('Lada.model.OrtszuordnungMp'); this.record.set('messprogrammId', this.messprogramm.get('id')); } if (!this.record.get('letzteAenderung')) { this.record.data.letzteAenderung = new Date(); } } this.down('ortszuordnungform').setRecord(this.record); var osg = this.down('ortstammdatengrid'); var map = this.down('map'); osg.setLoading(true); map.setLoading(true); this.ortstore = Ext.data.StoreManager.get('orte'); this.ortstore.load(); var ortId; if (this.messprogramm) { ortId = this.record.get('ort'); } else { ortId = this.record.get('ortId'); } if (ortId !== undefined && !this.ortstore.findRecord('id', ortId)) { var record = Ext.create('Lada.model.Ort'); record.set('id', ortId); this.ortstore.add(record); Lada.model.Ort.load(ortId, { success: function(rec) { record.beginEdit(); for (key in rec.getData()) { record.set(key, rec.getData()[key]); } record.endEdit(); me.onStoreLoaded(); } }); } else { me.onStoreLoaded(); } map.addListener('featureselected', osg.selectOrt, osg); osg.addListener('select', map.selectFeature, map); osg.addListener('select', me.activateCloneButton, me); }, /** * @private * Override to display and update the map view in the panel. */ afterRender: function(){ this.superclass.afterRender.apply(this, arguments); var map = this.down('map'); map.map.addControl(new OpenLayers.Control.LayerSwitcher()); }, /** * Instructs the fields / forms listed in this method to set a message. * @param errors These Errors shall be shown * @param warnings These Warning shall be shown */ setMessages: function(errors, warnings) { //todo this is a stub }, /** * Instructs the fields / forms listed in this method to clear their messages. */ clearMessages: function() { //todo this is a stub }, activateCloneButton: function() { var toolbar = this.down('panel[name=ortgrid]').getDockedItems()[0]; toolbar.down('button[action=clone]').enable(); }, /** * childs will be populated with store entries after all entries are loaded * from all sources */ onStoreLoaded: function() { var map = this.down('map'); var osg = this.down('ortstammdatengrid'); osg.setStore(this.ortstore); map.addLocations(this.ortstore); map.featureLayer.setVisibility(false); map.selectedFeatureLayer = new OpenLayers.Layer.Vector( 'gewählter Messpunkt', { styleMap: new OpenLayers.StyleMap({ externalGraphic: 'resources/lib/OpenLayers/img/marker-blue.png', pointRadius: 12, label: '${bez}', labelAlign: 'rt', fontColor: 'blue', fontWeight: 'bold', labelOutlineColor: 'white', labelOutlineWidth: 3 }), displayInLayerSwitcher: false, projection: new OpenLayers.Projection('EPSG:3857') }); map.map.addLayer(map.selectedFeatureLayer); var ortId; if (this.messprogramm) { ortId = this.record.get('ort'); } else { ortId = this.record.get('ortId'); } if (ortId){ var feat = map.featureLayer.getFeaturesByAttribute('id', ortId); var ortrecord = this.ortstore.findRecord('id', ortId); osg.selectOrt(map, feat); map.selectFeature(this.model, ortrecord); this.down('ortszuordnungform').setOrt(null,ortrecord); } osg.setLoading(false); map.setLoading(false); }, onEsc: function() { var me = this; var search = me.down('textfield[name=search]'); if (search.hasFocus) { return; } me.callParent(arguments); } });