# HG changeset patch # User Raimund Renkert # Date 1425994267 -3600 # Node ID 2c8aa09402a21cce413a9ae15c0e9b28134cc947 # Parent 1dedce48e3e1feee90ae63d1c0833767a68e0b61 Added controller for PKommentarGrid and implemented update/add/delete. diff -r 1dedce48e3e1 -r 2c8aa09402a2 app/controller/PKommentarGrid.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/controller/PKommentarGrid.js Tue Mar 10 14:31:07 2015 +0100 @@ -0,0 +1,61 @@ +/* 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. + */ + +Ext.define('Lada.controller.PKommentarGrid', { + extend: 'Ext.app.Controller', + + init: function() { + this.control({ + 'pkommentargrid': { + edit: this.edit + }, + 'pkommentargrid button[action=add]': { + click: this.add + }, + 'pkommentargrid button[action=delete]': { + click: this.remove + } + }); + }, + + edit: function(editor, context) { + context.record.save({ + success: function() { + context.grid.store.reload(); + context.grid.up('window').initData(); + }, + failure: function() { + // TODO + } + }); + }, + + add: function(button) { + var record = Ext.create('Lada.model.PKommentar'); + record.set('probeId', button.up('pkommentargrid').recordId); + button.up('pkommentargrid').store.insert(0, record); + button.up('pkommentargrid').rowEditing.startEdit(0, 1); + }, + + remove: function(button) { + var grid = button.up('grid'); + var selection = grid.getView().getSelectionModel().getSelection()[0]; + Ext.MessageBox.confirm('Löschen', 'Sind Sie sicher?', function(btn) { + if (btn === 'yes') { + selection.destroy({ + success: function() { + button.up('window').initData(); + }, + failure: function() { + // TODO + } + }); + } + }); + } +}); diff -r 1dedce48e3e1 -r 2c8aa09402a2 app/view/grid/PKommentar.js --- a/app/view/grid/PKommentar.js Tue Mar 10 12:11:50 2015 +0100 +++ b/app/view/grid/PKommentar.js Tue Mar 10 14:31:07 2015 +0100 @@ -14,12 +14,13 @@ alias: 'widget.pkommentargrid', requires: [ - 'Ext.toolbar.Toolbar' + 'Ext.toolbar.Toolbar', + 'Lada.store.PKommentare' ], maxHeight: 350, emptyText: 'Keine Kommentaregefunden.', - minHeight: 65, + minHeight: 110, viewConfig: { deferEmptyText: false }, @@ -27,11 +28,11 @@ recordId: null, initComponent: function() { - var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', { + this.rowEditing = Ext.create('Ext.grid.plugin.RowEditing', { clicksToMoveEditor: 1, autoCancel: false }); - this.plugins = [rowEditing]; + this.plugins = [this.rowEditing]; this.dockedItems = [{ xtype: 'toolbar', dock: 'bottom', @@ -49,7 +50,20 @@ this.columns = [{ header: 'Erzeuger', dataIndex: 'erzeuger', + width: 140, + renderer: function(value) { + if (!value || value === '') { + return ''; + } + var store = Ext.data.StoreManager.get('messstellen'); + var record = store.getById(value); + return record.get('messStelle'); + }, editor: { + xtype: 'combobox', + store: Ext.data.StoreManager.get('messstellen'), + displayField: 'messStelle', + valueField: 'id', allowBlank: false } }, { @@ -65,10 +79,25 @@ header: 'Text', dataIndex: 'text', flex: 1, + renderer: function(value) { + return '
' + + value + '
'; + }, editor: { + xtype: 'textarea', allowBlank: false } }]; + this.initData(); this.callParent(arguments); + }, + + initData: function() { + this.store = Ext.create('Lada.store.PKommentare'); + this.store.load({ + params: { + probeId: this.recordId + } + }); } });