dustin@757: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
dustin@757:  * Software engineering by Intevation GmbH
dustin@757:  *
dustin@757:  * This file is Free Software under the GNU GPL (v>=3)
dustin@757:  * and comes with ABSOLUTELY NO WARRANTY! Check out
dustin@757:  * the documentation coming with IMIS-Labordaten-Application for details.
dustin@757:  */
dustin@757: 
dustin@757: /*
dustin@757:  * Grid to list Messmethoden
dustin@757:  */
dustin@757: Ext.define('Lada.view.grid.Messmethoden', {
dustin@757:     extend: 'Ext.grid.Panel',
dustin@757:     alias: 'widget.messmethodengrid',
dustin@757: 
dustin@757:     requires: [
dustin@757:         'Lada.view.widget.Messmethode'
dustin@757:     ],
dustin@757: 
dustin@767:     maxHeight: 150,
dustin@767:     minHeight: 150,
dustin@757:     viewConfig: {
dustin@757:         deferEmptyText: false
dustin@757:     },
raimund@772:     margin: '0, 5, 5, 5',
dustin@757: 
dustin@757:     recordId: null,
dustin@768:     allowDeselect: true,
dustin@757: 
dustin@757:     initComponent: function() {
dustin@757:         var i18n = Lada.getApplication().bundle;
dustin@757:         this.emptyText = i18n.getMsg('emptytext.mmtgrid');
dustin@757: 
dustin@757:         this.rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
dustin@757:             clicksToMoveEditor: 1,
dustin@757:             autoCancel: false,
dustin@757:             disabled: false,
dustin@766:             pluginId: 'mmtrowedit',
dustin@757:             listeners:{
dustin@757:                 // Make row ineditable when readonly is set to true
dustin@757:                 // Normally this would belong into a controller an not the view.
dustin@757:                 // But the RowEditPlugin is not handled there.
dustin@757:                 beforeedit: function(e, o) {
dustin@757:                     var readonlywin = o.grid.up('window').record.get('readonly');
dustin@757:                     var readonlygrid = o.record.get('readonly');
dustin@757:                     if (readonlywin == true || readonlygrid == true || this.disabled)  {
dustin@757:                         return false;
dustin@757:                     }
dustin@757:                     return true;
dustin@757:                 }
dustin@757:             }
dustin@757:          });
dustin@757: 
dustin@757:         this.plugins = [this.rowEditing];
dustin@757: 
dustin@758: 
dustin@758: 
dustin@757:         this.dockedItems = [{
dustin@757:             xtype: 'toolbar',
dustin@757:             dock: 'bottom',
dustin@757:             items: ['->', {
dustin@757:                 text: i18n.getMsg('add'),
dustin@757:                 icon: 'resources/img/list-add.png',
dustin@757:                 action: 'add',
dustin@786:                 recordId: this.recordId
dustin@757:             }, {
dustin@757:                 text: i18n.getMsg('delete'),
dustin@757:                 icon: 'resources/img/list-remove.png',
dustin@757:                 action: 'delete'
dustin@757:             }]
dustin@757:         }];
dustin@757:         this.columns = [{
dustin@764:             header: i18n.getMsg('messmethode'),
dustin@758:             dataIndex: 'mmtId',
dustin@757:             flex: 1,
dustin@757:             renderer: function(value) {
dustin@757:                 if (!value || value === '') {
dustin@757:                     return '';
dustin@757:                 }
dustin@758:                 var store = Ext.data.StoreManager.get('messmethoden');
dustin@758:                 if (!store) {
dustin@758:                     store = Ext.create('Lada.store.Messmethoden');
dustin@758:                 }
dustin@759:                 return value + " - " + store.findRecord('id', value, 0, false, false, true).get('messmethode');
dustin@757:             },
dustin@757:             editor: {
dustin@757:                 xtype: 'combobox',
dustin@758:                 store: Ext.data.StoreManager.get('messmethoden'),
dustin@758:                 //displayField: 'mmtId',
dustin@757:                 valueField: 'id',
dustin@757:                 allowBlank: false,
dustin@757:                 editable: true,
dustin@757:                 forceSelection: true,
dustin@757:                 autoSelect: true,
dustin@757:                 queryMode: 'local',
dustin@757:                 minChars: 0,
dustin@757:                 typeAhead: false,
dustin@758:                 triggerAction: 'all',
dustin@758:                 tpl: Ext.create("Ext.XTemplate",
dustin@758:                     '<tpl for="."><div class="x-combo-list-item  x-boundlist-item" >' +
dustin@758:                     '{id} - {messmethode}</div></tpl>'),
dustin@758:                 displayTpl: Ext.create('Ext.XTemplate',
dustin@786:                     '<tpl for=".">{id} - {messmethode}</tpl>')
dustin@757:             }
dustin@757:         }];
dustin@757:         this.initData();
dustin@757:         this.callParent(arguments);
dustin@757:     },
dustin@757:     initData: function() {
dustin@757:         if (this.store) {
dustin@757:             this.store.removeAll();
dustin@757:         }
dustin@757:         else {
dustin@757:             this.store = Ext.create('Lada.store.MmtMessprogramm');
dustin@757:         }
dustin@759:         // Only load the Store when a Record ID is Present
dustin@759:         if (this.recordId) {
dustin@759:             this.store.load({
dustin@759:                 params: {
dustin@759:                     messprogrammId: this.recordId
dustin@759:                 }
dustin@759:             });
dustin@759:         }
dustin@757:     },
dustin@757:     setReadOnly: function(b) {
dustin@757:         if (b == true){
dustin@757:             //Readonly
dustin@757:             if (this.getPlugin('rowedit')){
dustin@757:                 this.getPlugin('rowedit').disable();
dustin@757:             }
dustin@757:             this.down('button[action=delete]').disable();
dustin@757:             this.down('button[action=add]').disable();
dustin@757:         }else{
dustin@757:             //Writable
dustin@757:             if (this.getPlugin('rowedit')){
dustin@757:                 this.getPlugin('rowedit').enable();
dustin@757:             }
dustin@757:             this.down('button[action=delete]').enable();
dustin@757:             this.down('button[action=add]').enable();
dustin@757:          }
dustin@757:     }
dustin@757: });