Mercurial > lada > lada-client
diff app/view/grid/Messungen.js @ 585:4251601c6305
Load status, messwerte and kommentare asynchronously.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Wed, 11 Mar 2015 13:13:56 +0100 |
parents | 5af82dc8612d |
children | a9268f5cde26 |
line wrap: on
line diff
--- a/app/view/grid/Messungen.js Wed Mar 11 13:12:44 2015 +0100 +++ b/app/view/grid/Messungen.js Wed Mar 11 13:13:56 2015 +0100 @@ -70,28 +70,16 @@ flex: 1, dataIndex: 'id', renderer: function(value) { -//fixme: dezeit existiert nur 1 status daher immer unbekannt - this.statusStore.load( - { - params: { - messungsId: value, - } - }); - - if (!this.statusStore){ - return 'unbekannt'; - } - if (this.statusStore.getTotalCount() === 0) { - return 'unbekannt'; - } - return this.statusStore.last().get('status'); + var id = 'messung-status-item' + value; + this.updateStatus(value, id); + return '<div id="' + id + '">Lade...</div>'; } }, { header: 'OK-Flag', dataIndex: 'fertig', flex: 1, - renderer: function(value){ - if(value){ + renderer: function(value) { + if (value) { return 'Ja'; } return 'Nein'; @@ -105,57 +93,96 @@ // Gibt die Anzahl der Messwerte wieder, // NICHT die Anzahl der verschiedenen Nukleide // Eventuell ist die Bezeichnug daher irreführend + dataIndex: 'id', flex: 1, - dataIndex: 'id', renderer: function(value) { -//fixme: gibt immer 0 aus - this.messwerteStore.load({ - params: { - messungId: value, - } - }); - - if (!this.messwerteStore){ - return 'unbekannt'; - } - return this.messwerteStore.getCount(); + var id = 'messung-nuklid-item' + value; + this.updateNuklide(value, id); + return '<div id="' + id + '">Lade...</div>'; } }, { header: 'Anzahl Kommentare', flex: 1, dataIndex: 'id', renderer: function(value) { -//fixme: gibt immer 0 aus - this.mKommentareStore.load({ - params: { - messungsId: value, - } - }); - - if (!this.mKommentareStore){ - return 'unbekannt'; - } - - return this.mKommentareStore.getTotalCount(); + var id = 'messung-kommentar-item' + value; + this.updateKommentare(value, id); + return '<div id="' + id + '">Lade...</div>'; } }]; this.initData(); this.callParent(arguments); }, - initData: function(){ + initData: function() { this.store = Ext.create('Lada.store.Messungen'); - this.statusStore = Ext.create('Lada.store.Status'); - this.messwerteStore = Ext.create('Lada.store.Messwerte'); - this.mKommentareStore = Ext.create('Lada.store.MKommentare'); - this.store.load({ params: { probeId: this.recordId - }, - success: function(record, response){ - console.log(Ext.getClassName(response)); } }); + }, + + updateStatus: function(value, divId) { + var statusStore = Ext.create('Lada.store.Status'); + statusStore.on('load', + this.updateStatusColumn, + this, + {divId: divId}); + statusStore.load({ + params: { + messungsId: value + } + }); + }, + + updateNuklide: function(value, divId) { + var messwerte = Ext.create('Lada.store.Messwerte'); + messwerte.on('load', + this.updateColumn, + this, + {divId: divId}); + messwerte.load({ + params: { + messungsId: value + } + }); + }, + + updateKommentare: function(value, divId) { + var kommentare = Ext.create('Lada.store.MKommentare'); + kommentare.on('load', + this.updateColumn, + this, + {divId: divId}); + kommentare.load({ + params: { + messungsId: value + } + }); + }, + + updateColumn: function(store, record, success, opts) { + var value; + if (store.getTotalCount() === 0) { + value = 'Keine'; + } + else { + value = store.getTotalCount(); + } + Ext.fly(opts.divId).update(value); + }, + + updateStatusColumn: function(sstore, record, success, opts) { + var value; + if (sstore.getTotalCount() === 0) { + value = 'unbekannt'; + } + else { + value = sstore.last().get('status'); + } + if (Ext.fly(opts.divId)) { + Ext.fly(opts.divId).update(value); + } } });