raimund@770: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
raimund@770:  * Software engineering by Intevation GmbH
raimund@770:  *
raimund@770:  * This file is Free Software under the GNU GPL (v>=3)
raimund@770:  * and comes with ABSOLUTELY NO WARRANTY! Check out
raimund@770:  * the documentation coming with IMIS-Labordaten-Application for details.
raimund@770:  */
raimund@770: 
raimund@770: /**
raimund@770:  * Combobox for Deskriptor
raimund@770:  */
raimund@770: Ext.define('Lada.view.widget.Deskriptor', {
raimund@770:     extend: 'Lada.view.widget.base.ComboBox',
raimund@770:     alias: 'widget.deskriptor',
raimund@850:     displayField: 'id',
raimund@770:     valueField: 'id',
raimund@770:     // Enable filtering of comboboxes
raimund@770:     triggerAction: 'all',
raimund@770:     typeAhead: false,
raimund@770:     layer: null,
raimund@849:     queryMode: 'remote',
raimund@849:     remoteFilter: true,
raimund@850:     tpl: Ext.create('Ext.XTemplate',
raimund@850:         '<tpl for="."><div class="x-combo-list-item  x-boundlist-item" >' +
raimund@850:             '{sn} - {beschreibung}</div></tpl>'),
raimund@850:     displayTpl: Ext.create('Ext.XTemplate',
raimund@925:          '<tpl for="."><tpl if="sn &gt; 0">{sn} - {beschreibung}</tpl></tpl>'),
raimund@849: 
raimund@770:     listeners: {
raimund@849:         focus: {
raimund@770:             fn: function(field) {
raimund@770:                 if (field.up('deskriptor').layer === 0) {
raimund@770:                     field.store.proxy.extraParams = {'layer': field.up('deskriptor').layer};
raimund@770:                 }
raimund@770:                 else {
raimund@770:                     var parents = field.up('deskriptor').getParents(this);
raimund@770:                     if (parents !== '') {
raimund@770:                         field.store.proxy.extraParams = {
raimund@770:                             'layer': field.up('deskriptor').layer,
raimund@770:                             'parents': parents
raimund@770:                         };
raimund@770:                         field.store.load();
raimund@770:                     }
raimund@925:                     else {
raimund@925:                         field.store.proxy.extraParams = {
raimund@925:                             'layer': field.up('deskriptor').layer
raimund@925:                         };
raimund@925:                         field.store.load();
raimund@925:                     }
raimund@770:                 }
raimund@770:             }
raimund@770:         }
raimund@770:     },
raimund@770: 
raimund@770:     initComponent: function() {
raimund@770:         this.store = Ext.create('Lada.store.Deskriptoren');
raimund@925:         this.store.on('load', function() {
raimund@925:             this.insert(0, {sn: 0, beschreibung: 'leer'});
raimund@925:             if (this.proxy.extraParams.layer > 0 &&
raimund@925:                 !this.proxy.extraParams.parents) {
raimund@925:                 this.removeAll();
raimund@925:             }
raimund@925:         }, this.store);
raimund@770: 
raimund@770:         this.callParent(arguments);
raimund@783:         this.down('combobox').isFormField = false;
raimund@770:     },
raimund@770: 
raimund@770:     getParents: function(field) {
raimund@770:         var set = field.up('fieldset');
raimund@770:         var allS = set.items.items;
raimund@770:         var p = '';
raimund@770: 
raimund@770:         for (var i = 0; i < field.up('deskriptor').layer; i++) {
raimund@770:             if (allS[i].getValue() > 0) {
raimund@770:                 p += allS[i].getValue();
raimund@770:                 if (i < field.up('deskriptor').layer - 1) {
raimund@770:                     p += ', ';
raimund@770:                 }
raimund@770:             }
raimund@770:         }
raimund@770:         return p;
raimund@770:     }
raimund@770: });