dustin@975: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz dustin@975: * Software engineering by Intevation GmbH dustin@975: * dustin@975: * This file is Free Software under the GNU GPL (v>=3) dustin@975: * and comes with ABSOLUTELY NO WARRANTY! Check out dustin@975: * the documentation coming with IMIS-Labordaten-Application for details. dustin@975: */ dustin@975: dustin@975: /** dustin@975: * Controller for filter result grid. dustin@975: */ dustin@975: Ext.define('Lada.controller.grid.MessprogrammeList', { dustin@975: extend: 'Ext.app.Controller', dustin@975: requires: [ dustin@975: 'Lada.view.window.Messprogramm', dustin@975: 'Lada.view.window.GenProbenFromMessprogramm' dustin@975: ], dustin@975: dustin@975: /** dustin@975: * Initialize the Controller with listeners dustin@975: */ dustin@975: init: function() { dustin@975: this.control({ dustin@975: 'messprogrammelistgrid': { dustin@977: itemdblclick: this.editItem, dustin@977: select: this.activateButtons, dustin@977: deselect: this.deactivateButtons dustin@975: }, dustin@975: 'messprogrammelistgrid toolbar button[action=addMessprogramm]': { dustin@975: click: this.addMessprogrammItem dustin@975: }, dustin@975: 'messprogrammelistgrid toolbar button[action=genProbenFromMessprogramm]': { dustin@975: click: this.genProbenFromMessprogramm dustin@975: } dustin@975: }); dustin@975: this.callParent(arguments); dustin@975: }, dustin@975: dustin@975: /** dustin@975: * This function is called after a Row in the dustin@975: * {@link Lada.view.grid.MessprogrammeList} dustin@975: * was double-clicked. dustin@975: * The function opens a {@link Lada.view.window.ProbeEdit} dustin@975: * or a {@link Lada.view.window.Messprogramm}. dustin@975: * To determine which window has to be opened, the function dustin@975: * analyse the records modelname. dustin@975: */ dustin@975: editItem: function(grid, record) { dustin@975: var winname = 'Lada.view.window.Messprogramm'; dustin@975: var win = Ext.create(winname, { dustin@975: record: record, dustin@975: style: 'z-index: -1;' //Fixes an Issue where windows could not be created in IE8 dustin@975: }); dustin@975: win.show(); dustin@975: win.initData(); dustin@975: }, dustin@975: dustin@975: /** dustin@975: * This function opens a new window to create a Probe dustin@975: * {@link Lada.view.window.Messprogramm} dustin@975: */ dustin@975: addMessprogrammItem: function() { dustin@975: var win = Ext.create('Lada.view.window.Messprogramm'); dustin@975: win.show(); dustin@975: win.initData(); dustin@975: }, dustin@975: dustin@975: /** dustin@975: * This button creates a window to generate Proben dustin@975: * from a selected messprogramm. dustin@975: */ dustin@975: genProbenFromMessprogramm: function(button) { dustin@975: var grid = button.up('grid'); dustin@975: var selection = grid.getView().getSelectionModel().getSelection(); dustin@975: var i18n = Lada.getApplication().bundle; dustin@975: var proben = []; dustin@975: for (var i = 0; i < selection.length; i++) { dustin@975: proben.push(selection[i].get('id')); dustin@975: } dustin@975: var me = this; dustin@975: dustin@975: var winname = 'Lada.view.window.GenProbenFromMessprogramm'; dustin@975: for (p in proben) { dustin@975: grid.setLoading(true); dustin@975: Ext.ClassManager.get('Lada.model.Messprogramm').load(proben[p], { dustin@975: failure: function(record, action) { dustin@975: me.setLoading(false); dustin@975: // TODO dustin@975: console.log('An unhandled Failure occured. See following Response and Record'); dustin@975: console.log(action); dustin@975: console.log(record); dustin@975: }, dustin@975: success: function(record, response) { dustin@975: grid.setLoading(false); dustin@975: dustin@975: var win = Ext.create(winname, { dustin@975: record: record, dustin@975: parentWindow: null dustin@975: }); dustin@975: win.show(); dustin@975: win.initData(); dustin@975: }, dustin@975: scope: this dustin@975: }); dustin@975: } dustin@975: }, dustin@975: dustin@977: /** dustin@977: * Toggles the buttons in the toolbar dustin@977: **/ dustin@977: activateButtons: function(rowModel, record) { dustin@977: var grid = rowModel.view.up('grid'); dustin@977: this.buttonToggle(true, grid); dustin@977: }, dustin@977: dustin@977: /** dustin@977: * Toggles the buttons in the toolbar dustin@977: **/ dustin@977: deactivateButtons: function(rowModel, record) { dustin@977: var grid = rowModel.view.up('grid'); dustin@977: // Only disable buttons when nothing is selected dustin@977: if (rowModel.selected.items == 0) { dustin@977: this.buttonToggle(false, grid); dustin@977: } dustin@977: }, dustin@977: dustin@977: /** dustin@977: * Enables/Disables a set of buttons dustin@977: **/ dustin@977: buttonToggle: function(enabled, grid) { dustin@977: if (!enabled) { dustin@977: grid.down('button[action=genProbenFromMessprogramm]').disable(); dustin@977: } dustin@977: else { dustin@977: grid.down('button[action=genProbenFromMessprogramm]').enable(); dustin@977: } dustin@977: }, dustin@977: dustin@975: reload: function(btn) { dustin@975: if (btn === 'yes') { dustin@975: location.reload(); dustin@975: } dustin@975: } dustin@975: }); dustin@975: