raimund@548: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
raimund@548:  * Software engineering by Intevation GmbH
raimund@548:  *
raimund@548:  * This file is Free Software under the GNU GPL (v>=3)
raimund@548:  * and comes with ABSOLUTELY NO WARRANTY! Check out
raimund@548:  * the documentation coming with IMIS-Labordaten-Application for details.
raimund@548:  */
raimund@548: 
raimund@548: /*
raimund@548:  * Grid to list Orte
raimund@548:  */
raimund@548: Ext.define('Lada.view.grid.Ort', {
raimund@548:     extend: 'Ext.grid.Panel',
raimund@548:     alias: 'widget.ortgrid',
raimund@548: 
raimund@548:     maxHeight: 350,
raimund@548:     emptyText: 'Keine Orte gefunden.',
raimund@548:         // minHeight and deferEmptyText are needed to be able to show the
raimund@548:         // emptyText message.
raimund@548:     minHeight: 110,
raimund@548:     viewConfig: {
raimund@548:         deferEmptyText: false
raimund@548:     },
raimund@548:     margin: '0, 5, 5, 5',
raimund@548: 
raimund@548:     recordId: null,
raimund@548: 
raimund@548:     warnings: null,
raimund@548:     errors: null,
raimund@548: 
raimund@548:     initComponent: function() {
raimund@548:         this.dockedItems = [{
raimund@548:             xtype: 'toolbar',
raimund@548:             dock: 'bottom',
raimund@548:             items: ['->', {
raimund@548:                 text: 'Hinzufügen',
raimund@548:                 icon: 'resources/img/list-add.png',
raimund@548:                 action: 'add',
raimund@548:                 probeId: this.probeId
raimund@548:             }, {
raimund@548:                 text: 'Löschen',
raimund@548:                 icon: 'resources/img/list-remove.png',
raimund@548:                 action: 'delete'
raimund@548:             }]
raimund@548:         }];
raimund@548:         this.columns = [{
raimund@548:             header: 'Typ',
raimund@548:             dataIndex: 'ortsTyp',
raimund@548:             width: 50,
raimund@548:             editor: {
raimund@548:                 allowBlank: false
raimund@548:             }
raimund@548:         }, {
raimund@548:             header: 'Staat',
raimund@548:             dataIndex: 'ort',
raimund@548:             width: 70,
raimund@548:             renderer: function(value) {
raimund@548:                 var store = Ext.data.StoreManager.get('locations');
raimund@548:                 var staaten = Ext.data.StoreManager.get('staaten');
raimund@548:                 var record =
raimund@548:                     staaten.getById(store.getById(value).get('staatId'));
raimund@548:                 return record.get('staatIso');
raimund@548:             }
raimund@548:         }, {
raimund@548:             header: 'Gemeineschlüssel',
raimund@548:             dataIndex: 'ort',
raimund@548:             width: 120,
raimund@548:             renderer: function(value) {
raimund@548:                 var store = Ext.data.StoreManager.get('locations');
raimund@548:                 var record = store.getById(value);
raimund@548:                 return record.get('verwaltungseinheitId');
raimund@548:             }
raimund@548:         }, {
raimund@548:             header: 'Gemeindename',
raimund@548:             dataIndex: 'ort',
raimund@548:             flex: 1,
raimund@548:             renderer: function(value) {
raimund@548:                 var store = Ext.data.StoreManager.get('locations');
raimund@548:                 var gemeinden =
raimund@548:                     Ext.data.StoreManager.get('verwaltungseinheiten');
raimund@548:                 var record = store.getById(value);
raimund@548:                 var gemid = record.get('verwaltungseinheitId');
raimund@548:                 var record2 = gemeinden.getById(gemid);
raimund@548:                 return record2.get('bezeichnung');
raimund@548:             }
raimund@548:         }, {
raimund@548:             header: 'Messpunkt',
raimund@548:             dataIndex: 'ort',
raimund@548:             renderer: function(value) {
raimund@548:                 var store = Ext.getStore('locations');
raimund@548:                 var record = store.getById(value);
raimund@548:                 return record.get('bezeichnung');
raimund@548:             }
raimund@548:         }];
raimund@548:         this.initData();
raimund@548:         this.callParent(arguments);
raimund@548:     },
raimund@548: 
raimund@548:     initData: function() {
raimund@548:         this.store = Ext.create('Lada.store.Orte');
raimund@548:         this.store.load({
raimund@548:             params: {
raimund@548:                 probeId: this.recordId
raimund@548:             }
raimund@548:         });
raimund@548:         Ext.ClassManager.get('Lada.model.Probe').load(this.recordId, {
raimund@548:             failure: function(record, action) {
raimund@548:                 // TODO
raimund@548:             },
raimund@548:             success: function(record, response) {
raimund@548:                 var json = Ext.decode(response.response.responseText);
raimund@548:                 if (json) {
raimund@548:                     this.warnings = json.warnings;
raimund@548:                     this.errors = json.errors;
raimund@548:                 }
raimund@548:             },
raimund@548:             scope: this
raimund@548:         });
raimund@548:     },
raimund@548: 
raimund@548: 
raimund@548:     setReadOnly: function() {
raimund@548:         this.getPlugin('rowedit').disable();
raimund@548:         this.down('button[action=add]').disable();
raimund@548:         this.down('button[action=delete]').disable();
raimund@548:     }
raimund@548: });