# HG changeset patch # User Dustin Demuth # Date 1430922263 -7200 # Node ID b2fcbdc4969dc97f743c55508505b9048d6615ca # Parent b8502964f5c37cc1f382babf04e13a4024896c5a Filled MessmethodenGrid with life. diff -r b8502964f5c3 -r b2fcbdc4969d app.js --- a/app.js Wed May 06 14:15:37 2015 +0200 +++ b/app.js Wed May 06 16:24:23 2015 +0200 @@ -178,6 +178,7 @@ 'Lada.controller.Map', 'Lada.controller.form.Location', 'Lada.controller.ProbenPlanungSwitcher', - 'Lada.controller.form.Messprogramm' - ] + 'Lada.controller.form.Messprogramm', + 'Lada.controller.grid.Messmethode' + ] }); diff -r b8502964f5c3 -r b2fcbdc4969d app/controller/grid/Messmethode.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/controller/grid/Messmethode.js Wed May 06 16:24:23 2015 +0200 @@ -0,0 +1,123 @@ +/* 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. + */ + +/** + * This is a controller for a grid of Messmethode + */ +Ext.define('Lada.controller.grid.Messmethode', { + extend: 'Ext.app.Controller', + + /** + * Inhitialize the controller + * It has 3 listeners + */ + init: function() { + this.control({ + 'messmethodengrid': { + edit: this.gridSave, + canceledit: this.cancelEdit + }, + 'messmethodengrid button[action=add]': { + click: this.add + }, + 'messmethodengrid button[action=delete]': { + click: this.remove + } + }); + }, + + /** + * This function is called when the grids roweditor saves + * the record. + * On success it refreshes the windows which contains the grid + * On failure it displays a message + */ + gridSave: function(editor, context) { + console.log(context); + context.record.save({ + success: function() { + context.grid.initData(); + context.grid.up('window').initData(); + }, + failure: function(request, response) { + var json = response.request.scope.reader.jsonData; + if (json) { + if (json.message){ + Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title') + +' #'+json.message, + Lada.getApplication().bundle.getMsg(json.message)); + } else { + Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'), + Lada.getApplication().bundle.getMsg('err.msg.generic.body')); + } + } else { + Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'), + Lada.getApplication().bundle.getMsg('err.msg.response.body')); + } + } + }); + }, + + /** + * When the edit was canceled, + * the empty row might have been created by the roweditor is removed + */ + cancelEdit: function(editor, context) { + if (!context.record.get('id') || + context.record.get('id') === '') { + editor.getCmp().store.remove(context.record); + } + }, + + /** + * This function adds a new row + */ + add: function(button) { + var record = Ext.create('Lada.model.MmtMessprogramm'); + record.set('messprogrammId', button.up('messmethodengrid').recordId); + button.up('messmethodengrid').store.insert(0, record); + button.up('messmethodengrid').rowEditing.startEdit(0, 0); + }, + + /** + * A row can be removed from the grid with the remove + * function. It asks the user for confirmation + * If the removal was confirmed, it reloads the parent window on success, + * on failure, an error message is shown. + */ + remove: function(button) { + var grid = button.up('grid'); + //TODO i18n + 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(request, response) { + var json = response.request.scope.reader.jsonData; + if (json) { + if (json.message){ + Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.delete.title') + +' #'+json.message, + Lada.getApplication().bundle.getMsg(json.message)); + } else { + Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.delete.title'), + Lada.getApplication().bundle.getMsg('err.msg.generic.body')); + } + } else { + Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.delete.title'), + Lada.getApplication().bundle.getMsg('err.msg.response.body')); + } + } + }); + } + }); + } +}); diff -r b8502964f5c3 -r b2fcbdc4969d app/model/MmtMessprogramm.js --- a/app/model/MmtMessprogramm.js Wed May 06 14:15:37 2015 +0200 +++ b/app/model/MmtMessprogramm.js Wed May 06 16:24:23 2015 +0200 @@ -16,11 +16,12 @@ fields: [{ name: 'id' }, { - name: 'mprId' + name: 'messprogrammId' }, { name: 'mmtId' }, { - name: 'messgroessen' + name: 'messgroessen', + defaultValue: [] }, { name: 'letzteAenderung', type: 'date', diff -r b8502964f5c3 -r b2fcbdc4969d app/view/grid/Messmethoden.js --- a/app/view/grid/Messmethoden.js Wed May 06 14:15:37 2015 +0200 +++ b/app/view/grid/Messmethoden.js Wed May 06 16:24:23 2015 +0200 @@ -52,6 +52,8 @@ this.plugins = [this.rowEditing]; + + this.dockedItems = [{ xtype: 'toolbar', dock: 'bottom', @@ -59,8 +61,7 @@ text: i18n.getMsg('add'), icon: 'resources/img/list-add.png', action: 'add', - probeId: this.probeId, - parentId: this.parentId + recordId: this.recordId, }, { text: i18n.getMsg('delete'), icon: 'resources/img/list-remove.png', @@ -69,19 +70,22 @@ }]; this.columns = [{ header: 'Messmethode', - dataIndex: 'id', + dataIndex: 'mmtId', flex: 1, renderer: function(value) { if (!value || value === '') { return ''; } - var store = Ext.data.StoreManager.get('messmethode'); - return store.findRecord('mprId', value, 0, false, false, true).get('messmethode'); + var store = Ext.data.StoreManager.get('messmethoden'); + if (!store) { + store = Ext.create('Lada.store.Messmethoden'); + } + return value + " - " + store.findRecord('id', value, 0, false, false, true).get('messmethode'); }, editor: { xtype: 'combobox', - store: Ext.data.StoreManager.get('messmethode'), - displayField: 'messmethode', + store: Ext.data.StoreManager.get('messmethoden'), + //displayField: 'mmtId', valueField: 'id', allowBlank: false, editable: true, @@ -90,13 +94,17 @@ queryMode: 'local', minChars: 0, typeAhead: false, - triggerAction: 'all' + triggerAction: 'all', + tpl: Ext.create("Ext.XTemplate", + '
' + + '{id} - {messmethode}
'), + displayTpl: Ext.create('Ext.XTemplate', + '{id} - {messmethode}'), } }]; this.initData(); this.callParent(arguments); }, - initData: function() { if (this.store) { this.store.removeAll(); @@ -106,11 +114,10 @@ } this.store.load({ params: { - mprId: this.recordId + messprogrammId: this.recordId } }); }, - setReadOnly: function(b) { if (b == true){ //Readonly diff -r b8502964f5c3 -r b2fcbdc4969d app/view/window/MessprogrammCreate.js --- a/app/view/window/MessprogrammCreate.js Wed May 06 14:15:37 2015 +0200 +++ b/app/view/window/MessprogrammCreate.js Wed May 06 16:24:23 2015 +0200 @@ -68,9 +68,11 @@ }, items: [{ xtype: 'messmethodengrid', + recordId: null, flex: 1 }, { xtype: 'messmethodengrid', + recordId: null, flex: 1 }] }] @@ -79,7 +81,7 @@ }, initData: function() { - var record = Ext.create('Lada.model.Messprogramm'); + record = Ext.create('Lada.model.Messprogramm'); this.down('messprogrammform').setRecord(record); }, diff -r b8502964f5c3 -r b2fcbdc4969d app/view/window/MessprogrammEdit.js --- a/app/view/window/MessprogrammEdit.js Wed May 06 14:15:37 2015 +0200 +++ b/app/view/window/MessprogrammEdit.js Wed May 06 16:24:23 2015 +0200 @@ -75,9 +75,8 @@ }, items: [{ xtype: 'messmethodengrid', - flex: 1 - }, { - xtype: 'messmethodengrid', + //recordId: null, + recordId: this.record.get('id'), flex: 1 }] }] @@ -100,16 +99,8 @@ success: function(record, response) { this.down('messprogrammform').setRecord(record); this.record = record; - owner = this.record.get('owner'); - // If this would be A probe, it would be always - // allowed to add Messungen: - /* - if (owner) { - me.enableAddMessungen(); - } - */ - + //this.down('messmethodengrid').recordId = record.get('id'); var json = Ext.decode(response.response.responseText); if (json) { this.setMessages(json.errors, json.warnings); @@ -137,7 +128,7 @@ */ disableChildren: function() { - // thera are no children.... + // there are no children.... }, enableChildren: function() {