[Lada-commits] [PATCH 1 of 2] Severe changes concerning the Resultgrids
Wald Commits
scm-commit at wald.intevation.org
Wed Dec 2 17:53:40 CET 2015
# HG changeset patch
# User Dustin Demuth <dustin at intevation.de>
# Date 1449074344 -3600
# Branch stammdatengrids
# Node ID fb99332bb48e799a6ddf08588d89cd937deba5de
# Parent ea477f62a667a5919ea1f391b5262d9b123b9d41
Severe changes concerning the Resultgrids.
- Intrduced "Stammdaten" which can be selected in the Mode Field on the left side,
- Added Stores and Models for the Stammdaten
- Removed the FilterResultgrid and replaced it with a model which uses inheritance.
Dynamic Grid Columns can now be derived from app/view/widget/DynamicGrid.js
For Proben and Messprogramme this is already done.
- There might be some REGRESSION concerning the buttons in the ProbeList and
MessprogrammeList grid, as those are not disabled properly.
This needs to be fixed in future commits.
diff -r ea477f62a667 -r fb99332bb48e app.js
--- a/app.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app.js Wed Dec 02 17:39:04 2015 +0100
@@ -201,7 +201,8 @@
// first before the application "launch" function is called.
controllers: [
'Lada.controller.Filter',
- 'Lada.controller.FilterResult',
+ 'Lada.controller.grid.ProbeList',
+ 'Lada.controller.grid.MessprogrammeList',
'Lada.controller.form.Probe',
'Lada.controller.form.Messung',
'Lada.controller.form.Ort',
diff -r ea477f62a667 -r fb99332bb48e app/controller/Filter.js
--- a/app/controller/Filter.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/controller/Filter.js Wed Dec 02 17:39:04 2015 +0100
@@ -56,7 +56,11 @@
/**
* Function called when the user selects a SQL query in the dropdownlist.
* The function will hide/display additional element related to the
- * selected search query
+ * selected search query.
+ * It also replaces the Store of the Filteresultgrid.
+ * Two possibilities exist to do so: Proben/Messprogramme where dynamic columns exist, but the
+ * content remains of the same type and Stammdaten, were columns are fixed but the type might
+ * vary between orte, kategorien, ...
*/
selectSql: function(element, record) {
var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]');
@@ -64,20 +68,70 @@
var desc = element.up('fieldset').down('displayfield[name=description]');
this.displayFields = record[0].data.results;
var filterFields = record[0].data.filters;
+ var contentPanel = element.up('panel[name=main]').down('panel[name=contentpanel]');
+ var queryType = record[0].get('type'); //The type of the query, might be proben, messprogramme,
+ // or a stammdatendtype
this.reset(element);
- var columnString = [];
- for (var i = 0; i < this.displayFields.length; i++) {
- columnString.push(this.displayFields[i].header);
+ contentPanel.removeAll();
+
+/// THIS IS INTERMEDIARY CODE AND CAN BE REMOVED WHEN TYPES ARE SENT FOR PROBEN AND MESSPROGRAMME
+ console.log('remove this intermediary code...');
+ var modes = element.up('panel[name=main]').down('radiogroup').getChecked();
+ queryType = (queryType) ? queryType : modes[0].inputValue;
+/// END OF INTERMEDIARY CODE
+
+
+ if (queryType == 'proben' || queryType == 'messprogramme') {
+ var frgrid; // The Resultgrid
+ var gridstore; // The Store which will be used in the resultgrid.
+
+ switch (queryType) {
+ case 'proben':
+ gridstore = Ext.create('Lada.store.ProbenList');
+ frgrid = Ext.create('Lada.view.grid.ProbeList');
+ break;
+ case 'messprogramme':
+ gridstore = Ext.create('Lada.store.MessprogrammeList');
+ frgrid = Ext.create('Lada.view.grid.MessprogrammeList');
+ break;
+ }
+
+ var columnString = [];
+ for (var i = 0; i < this.displayFields.length; i++) {
+ columnString.push(this.displayFields[i].header);
+ }
+ columns.setValue(columnString.join(', '));
+ desc.setValue(record[0].data.description);
+
+ // Setup Columns
+ if (this.displayFields) {
+ this.displayFields.reverse();
+ }
+
+ if (gridstore) {
+ frgrid.setStore(gridstore);
+ }
+
+ contentPanel.add(frgrid);
}
- columns.setValue(columnString.join(', '));
- desc.setValue(record[0].data.description);
-
- // Setup Columns of the probenlist
- this.displayFields.reverse();
-
- /* Setup Filters of the probenlist
+ else {
+ // Grids which are not build with dynamic columns
+ var resultGrid;
+ switch (queryType) {
+ case 'MessprogrammKategorie':
+ resultGrid = Ext.create('Lada.view.grid.MessprogrammKategorie');
+ break;
+ case 'DatensatzErzeuger':
+ resultGrid = Ext.create('Lada.view.grid.DatensatzErzeuger');
+ break;
+ }
+ if (resultGrid) {
+ contentPanel.add(resultGrid);
+ }
+ }
+ /* Setup Filters
*
* Allowed types are
* * text
@@ -188,12 +242,16 @@
/**
* Function is called when the user clicks the search button. The function
* will perform a search to the server on refreshes the result list.
+ * To do so it replaces the store of the Resultgrids.
*/
search: function(element) {
- var resultGrid = element.up('panel[name=main]').down('filterresultgrid');
+ var resultGrid = element.up('panel[name=main]').down('panel[name=contentpanel]').down('grid');
var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]');
var search = element.up('fieldset').down('combobox[name=filter]');
+ //Type of the search Proben/Messprogramme/Stammdaten
+ var type = search.store.getById(search.getValue()).get('type')
+
// Get search parameters:
var searchParams = {};
searchParams['qid'] = search.getValue();
@@ -209,18 +267,32 @@
var modes = element.up('panel[name=main]').down('radiogroup').getChecked();
var sname = modes[0].inputValue;
- if (sname === 'ProbeList') {
+ // Todo: Migragte away from sname, use type instead
+ if (sname === 'proben') {
sname = 'Lada.store.ProbenList';
}
- else if (sname === 'MessprogrammList') {
+ else if (sname === 'messprogramme') {
sname = 'Lada.store.MessprogrammeList';
}
+ else if (sname === 'stammdaten') {
+ //Store depends of the Type...
+ // TODO the switchcasese should be unified
+ switch (type) {
+ case 'MessprogrammKategorie':
+ sname = 'Lada.store.MessprogrammKategorie';
+ break;
+ case 'DatensatzErzeuger':
+ sname = 'Lada.store.DatensatzErzeuger';
+ break;
+ }
+ }
// Find the store or create a new one.
var store = Ext.StoreManager.lookup(sname);
if (!store) {
store = Ext.create(sname);
}
+ console.log(store);
if (store) {
store.addListener('beforeload', this.loadingAnimationOn, resultGrid);
store.addListener('load', this.loadingAnimationOff, resultGrid);
diff -r ea477f62a667 -r fb99332bb48e app/controller/ProbenPlanungSwitcher.js
--- a/app/controller/ProbenPlanungSwitcher.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/controller/ProbenPlanungSwitcher.js Wed Dec 02 17:39:04 2015 +0100
@@ -16,7 +16,8 @@
requires: [
'Lada.store.MessprogrammQueries',
- 'Lada.store.ProbeQueries'
+ 'Lada.store.ProbeQueries',
+ 'Lada.store.StammdatenQueries'
],
/**
@@ -38,59 +39,55 @@
* according to the checkboxes inputValue,
* the function alters the store which was loaded by the
* filterpanels combobox,
- * If enabled the function also disables / enables the UI-Buttons
- * in the Filterresult grid.
*/
switchModes: function(field) {
-
- var disableButtons = true;
var cbox = field.up('probenplanungswitcher').up().down('combobox');
- var resultGrid = field.up('panel[name=main]').down('filterresultgrid');
filters = field.up('panel[name=main]').down('fieldset[name=filtervariables]');
filters.removeAll();
filters.hide();
- var sname = 'Lada.store.ProbeQueries';
- var gridsname = 'Lada.store.ProbenList';
- if (field.inputValue === 'MessprogrammList' && cbox) {
- sname = 'Lada.store.MessprogrammQueries';
- gridsname = 'Lada.store.MessprogrammeList';
+
+ //Initialise variables which will define the querystore
+ // and the store which has to be loaded into the grid.
+ var querystorename = '';
+
+ // In dependence of the checkboxes input value,
+ // define the store of the filter.
+ // app/controller/Filter.js contains similar code.
+ if (field.inputValue === 'messprogramme' && cbox) {
+ querystorename = 'Lada.store.MessprogrammQueries';
}
- else if (field.inputValue === 'ProbeList' && cbox) {
- sname = 'Lada.store.ProbeQueries';
- gridsname = 'Lada.store.ProbenList';
+ else if (field.inputValue === 'proben' && cbox) {
+ querystorename = 'Lada.store.ProbeQueries';
+ }
+ else if (field.inputValue === 'stammdaten' && cbox) {
+ querystorename = 'Lada.store.StammdatenQueries';
}
+ if (querystorename) {
+ var store = Ext.StoreManager.lookup(querystorename);
- var store = Ext.StoreManager.lookup(sname);
+ if (!store) {
+ store = Ext.create(querystorename, {
+ //Select first Item on Load
+ listeners: {
+ load: function(store){
+ var records = new Array();
+ records.push(store.getAt(0));
- if (!store) {
- store = Ext.create(sname, {
- //Select first Item on Load
- listeners: {
- load: function(s){
- var records = new Array();
- records.push(store.getAt(0));
+ cbox.select(records[0]);
+ cbox.fireEvent('select', cbox, records);
+ }
+ }
+ });
+ }
- cbox.select(records[0]);
- cbox.fireEvent('select', cbox, records);
- }
+ if (store) {
+ if (!store.autoLoad) {
+ store.load();
}
- });
+ //cbox.reset();
+ cbox.bindStore(store);
+ }
}
- if (store) {
- store.load();
- cbox.reset();
- cbox.bindStore(store);
- }
-
- var gridstore = Ext.StoreManager.lookup(gridsname);
- if (!gridstore) {
- gridstore = Ext.create(gridsname);
- }
- if (gridstore) {
- resultGrid.setStore(gridstore);
- resultGrid.show();
- }
-
}
});
diff -r ea477f62a667 -r fb99332bb48e app/controller/grid/MessprogrammeList.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controller/grid/MessprogrammeList.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,112 @@
+/* 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.
+ */
+
+/**
+ * Controller for filter result grid.
+ */
+Ext.define('Lada.controller.grid.MessprogrammeList', {
+ extend: 'Ext.app.Controller',
+ requires: [
+ 'Lada.view.window.Messprogramm',
+ 'Lada.view.window.GenProbenFromMessprogramm'
+ ],
+
+ /**
+ * Initialize the Controller with listeners
+ */
+ init: function() {
+ this.control({
+ 'messprogrammelistgrid': {
+ itemdblclick: this.editItem
+ },
+ 'messprogrammelistgrid toolbar button[action=addMessprogramm]': {
+ click: this.addMessprogrammItem
+ },
+ 'messprogrammelistgrid toolbar button[action=genProbenFromMessprogramm]': {
+ click: this.genProbenFromMessprogramm
+ }
+ });
+ this.callParent(arguments);
+ },
+
+ /**
+ * This function is called after a Row in the
+ * {@link Lada.view.grid.MessprogrammeList}
+ * was double-clicked.
+ * The function opens a {@link Lada.view.window.ProbeEdit}
+ * or a {@link Lada.view.window.Messprogramm}.
+ * To determine which window has to be opened, the function
+ * analyse the records modelname.
+ */
+ editItem: function(grid, record) {
+ var winname = 'Lada.view.window.Messprogramm';
+ var win = Ext.create(winname, {
+ record: record,
+ style: 'z-index: -1;' //Fixes an Issue where windows could not be created in IE8
+ });
+ win.show();
+ win.initData();
+ },
+
+ /**
+ * This function opens a new window to create a Probe
+ * {@link Lada.view.window.Messprogramm}
+ */
+ addMessprogrammItem: function() {
+ var win = Ext.create('Lada.view.window.Messprogramm');
+ win.show();
+ win.initData();
+ },
+
+ /**
+ * This button creates a window to generate Proben
+ * from a selected messprogramm.
+ */
+ genProbenFromMessprogramm: function(button) {
+ var grid = button.up('grid');
+ var selection = grid.getView().getSelectionModel().getSelection();
+ var i18n = Lada.getApplication().bundle;
+ var proben = [];
+ for (var i = 0; i < selection.length; i++) {
+ proben.push(selection[i].get('id'));
+ }
+ var me = this;
+
+ var winname = 'Lada.view.window.GenProbenFromMessprogramm';
+ for (p in proben) {
+ grid.setLoading(true);
+ Ext.ClassManager.get('Lada.model.Messprogramm').load(proben[p], {
+ failure: function(record, action) {
+ me.setLoading(false);
+ // TODO
+ console.log('An unhandled Failure occured. See following Response and Record');
+ console.log(action);
+ console.log(record);
+ },
+ success: function(record, response) {
+ grid.setLoading(false);
+
+ var win = Ext.create(winname, {
+ record: record,
+ parentWindow: null
+ });
+ win.show();
+ win.initData();
+ },
+ scope: this
+ });
+ }
+ },
+
+ reload: function(btn) {
+ if (btn === 'yes') {
+ location.reload();
+ }
+ }
+});
+
diff -r ea477f62a667 -r fb99332bb48e app/controller/grid/ProbeList.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controller/grid/ProbeList.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,307 @@
+/* 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.
+ */
+
+/**
+ * Controller for the ProbeList result grid.
+ */
+Ext.define('Lada.controller.grid.ProbeList', {
+ extend: 'Ext.app.Controller',
+ requires: [
+ 'Lada.view.window.ProbeEdit',
+ 'Lada.view.window.GenProbenFromMessprogramm'
+ ],
+
+ /**
+ * Initialize the Controller with listeners
+ */
+ init: function() {
+ this.control({
+ 'probelistgrid': {
+ itemdblclick: this.editItem
+ },
+ 'probelistgrid toolbar button[action=addProbe]': {
+ click: this.addProbeItem
+ },
+ 'probelistgrid toolbar button[action=import]': {
+ click: this.uploadFile
+ },
+ 'probelistgrid toolbar button[action=export]': {
+ click: this.downloadFile
+ },
+ 'probelistgrid toolbar button[action=print]': {
+ click: this.printSelection
+ }
+ });
+ this.callParent(arguments);
+ },
+
+ /**
+ * This function is called after a Row in the
+ * {@link Lada.view.grid.ProbeList}
+ * was double-clicked.
+ * The function opens a {@link Lada.view.window.ProbeEdit}
+ * or a {@link Lada.view.window.Messprogramm}.
+ * To determine which window has to be opened, the function
+ * analyse the records modelname.
+ */
+ editItem: function(grid, record) {
+ var winname = 'Lada.view.window.ProbeEdit';
+
+ var win = Ext.create(winname, {
+ record: record,
+ style: 'z-index: -1;' //Fixes an Issue where windows could not be created in IE8
+ });
+
+ win.show();
+ win.initData();
+ },
+
+ /**
+ * This function opens a new window to create a Probe
+ * {@link Lada.view.window.ProbeCreate}
+ */
+ addProbeItem: function() {
+ var win = Ext.create('Lada.view.window.ProbeCreate');
+ win.show();
+ win.initData();
+ },
+
+ /**
+ * This function opens a {@link Lada.view.window.FileUpload}
+ * window to upload a LAF-File
+ */
+ uploadFile: function() {
+ var win = Ext.create('Lada.view.window.FileUpload', {
+ title: 'Datenimport',
+ modal: true
+ });
+
+ win.show();
+ },
+
+ /**
+ * This function can be used to Download the items which
+ * were selected in the {@link Lada.view.grid.ProbeList}
+ * The Download does not work with Internet Explorers older than v.10
+ */
+ downloadFile: function(button) {
+ var grid = button.up('grid');
+ var selection = grid.getView().getSelectionModel().getSelection();
+ var i18n = Lada.getApplication().bundle;
+ var proben = [];
+ for (var i = 0; i < selection.length; i++) {
+ proben.push(selection[i].get('id'));
+ }
+ var me = this;
+ Ext.Ajax.request({
+ url: 'lada-server/export/laf',
+ jsonData: {'proben': proben},
+ success: function(response) {
+ var content = response.responseText;
+ var blob = new Blob([content],{type: 'text/plain'});
+ saveAs(blob, 'export.laf');
+ },
+ failure: function(response) {
+ /*
+ SSO will send a 302 if the Client is not authenticated
+ unfortunately this seems to be filtered by the browser.
+ We assume that a 302 was send when the follwing statement
+ is true.
+ */
+ if (response.status == 0 && response.responseText === "") {
+ Ext.MessageBox.confirm('Erneutes Login erforderlich',
+ 'Ihre Session ist abgelaufen.<br/>'+
+ 'Für ein erneutes Login muss die Anwendung neu geladen werden.<br/>' +
+ 'Alle ungesicherten Daten gehen dabei verloren.<br/>' +
+ 'Soll die Anwendung jetzt neu geladen werden?', this.reload);
+ }
+ // further error handling
+ var json = Ext.JSON.decode(response.responseText);
+ if (json) {
+ if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){
+ formPanel.setMessages(json.errors, json.warnings);
+ }
+ if(json.message){
+ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.generic.title')
+ +' #'+json.message,
+ Lada.getApplication().bundle.getMsg(json.message));
+ } else {
+ Ext.Msg.alert(i18n.getMsg('err.msg.generic.title'),
+ i18n.getMsg('err.msg.laf.filecreatefailed'));
+ }
+ } else {
+ Ext.Msg.alert(i18n.getMsg('err.msg.generic.title'),
+ i18n.getMsg('err.msg.laf.filecreatefailed'));
+ }
+ }
+ });
+ },
+
+ /**
+ * Send the selection to a Printservice
+ */
+ printSelection: function(button) {
+
+ //disable Button and setLoading...
+ button.disable();
+ button.setLoading(true);
+
+ var grid = button.up('grid');
+ var selection = grid.getView().getSelectionModel().getSelection();
+ var i18n = Lada.getApplication().bundle;
+ var me = this;
+ var columns = [];
+ var columnNames = [];
+ var visibleColumns = [];
+ var displayName = '';
+ var data = [];
+
+ // Write the columns to an array
+ try {
+ for (key in selection[0].data) {
+ // Do not write owner or readonly or id
+ if (["owner", "readonly", "id"].indexOf(key) == -1){
+ columns.push(key);
+ }
+ }
+ }
+ catch (e) {
+ console.log(e);
+ }
+
+ //Retrieve visible columns' id's and names.
+ // and set displayName
+ try {
+ var grid = button.up('grid');
+ var cman = grid.columnManager;
+ var cols = cman.getColumns();
+
+ displayName = grid.down('tbtext').text;
+
+ for (key in cols) {
+ if (cols[key].dataIndex) {
+ visibleColumns[cols[key].dataIndex] = cols[key].text;
+ }
+ }
+ }
+ catch (e) {
+ console.log(e);
+ }
+
+
+ // Retrieve Data from selection
+ try {
+ for (item in selection) {
+ var row = selection[item].data;
+ var out = [];
+ //Lookup every column and write to data array.
+ for (key in columns){
+ var attr = columns[key];
+ //Only write data to output when the column is not hidden.
+ if (row[attr] != null &&
+ visibleColumns[attr] != null) {
+ out.push(row[attr].toString());
+ }
+ else if (visibleColumns[attr] != null) {
+ out.push('');
+ }
+ }
+ data.push(out);
+ }
+ }
+ catch (e){
+ console.log(e);
+ }
+
+ //Retrieve the names of the columns.
+ try {
+ var grid = button.up('grid');
+ var cman = grid.columnManager;
+ var cols = cman.getColumns();
+ //Iterate columns and find column names for the key...
+ // This WILL run into bad behaviour when column-keys exist twice.
+ for (key in columns){
+ for (k in cols){
+ if (cols[k].dataIndex == columns[key]){
+ columnNames.push(cols[k].text);
+ break;
+ }
+ }
+ }
+ }
+ catch (e) {
+ console.log(e);
+ }
+
+ var printData = {
+ 'layout': 'A4 landscape',
+ 'outputFormat': 'pdf',
+ 'attributes': {
+ 'title': 'Auszug aus LADA',
+ 'displayName': displayName,
+ 'table': {
+ 'columns': columnNames,
+ 'data': data
+ }
+ }
+ }
+
+ Ext.Ajax.request({
+ url: 'lada-printer/buildreport.pdf',
+ //configure a proxy in apache conf!
+ jsonData: printData,
+ binary: true,
+ success: function(response) {
+ var content = response.responseBytes;
+ var filetype = response.getResponseHeader('Content-Type');
+ var blob = new Blob([content],{type: filetype});
+ saveAs(blob, 'lada-print.pdf');
+ button.enable();
+ button.setLoading(false);
+ },
+ failure: function(response) {
+ console.log('failure');
+ // Error handling
+ // TODO
+ //console.log(response.responseText)
+ button.enable();
+ button.setLoading(false);
+ if (response.responseText) {
+ try {
+ var json = Ext.JSON.decode(response.responseText);
+ }
+ catch(e){
+ console.log(e);
+ }
+ }
+ if (json) {
+ if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){
+ formPanel.setMessages(json.errors, json.warnings);
+ }
+ if(json.message){
+ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.generic.title')
+ +' #'+json.message,
+ Lada.getApplication().bundle.getMsg(json.message));
+ } else {
+ Ext.Msg.alert(i18n.getMsg('err.msg.generic.title'),
+ i18n.getMsg('err.msg.print.noContact'));
+ }
+ } else {
+ Ext.Msg.alert(i18n.getMsg('err.msg.generic.title'),
+ i18n.getMsg('err.msg.print.noContact'));
+ }
+ }
+ });
+ },
+
+ reload: function(btn) {
+ if (btn === 'yes') {
+ location.reload();
+ }
+ }
+});
diff -r ea477f62a667 -r fb99332bb48e app/model/DatensatzErzeuger.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/model/DatensatzErzeuger.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,62 @@
+/* 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.
+ */
+
+/**
+ * Model class for DatensatzErzeuger Stammdaten
+ */
+Ext.define('Lada.model.DatensatzErzeuger', {
+ extend: 'Ext.data.Model',
+
+ fields: [{
+ name: 'id'
+ }, {
+ name: 'netzbetreiberId'
+ }, {
+ name: 'daErzeugerId'
+ }, {
+ name: 'mstId'
+ }, {
+ name: 'bezeichnung'
+ }, {
+ name: 'letzteAenderung',
+ type: 'date',
+ convert: function(v) {
+ if (!v) {
+ return v;
+ }
+ return new Date(v);
+ }
+ }, {
+ name: 'treeModified',
+ serialize: function(value) {
+ if (value === '') {
+ return null;
+ }
+ return value;
+ }
+ }, {
+ name: 'parentModified',
+ serialize: function(value) {
+ if (value === '') {
+ return null;
+ }
+ return value;
+ }
+ }],
+
+ idProperty: 'id',
+
+ proxy: {
+ type: 'rest',
+ url: 'lada-server/datensatzerzeuger',
+ reader: {
+ type: 'json',
+ root: 'data'
+ }
+ }
+});
diff -r ea477f62a667 -r fb99332bb48e app/model/MessprogrammKategorie.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/model/MessprogrammKategorie.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,60 @@
+/* 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.
+ */
+
+/**
+ * Model class for MessprogrammKategorie Stammdaten
+ */
+Ext.define('Lada.model.MessprogrammKategorie', {
+ extend: 'Ext.data.Model',
+
+ fields: [{
+ name: 'id'
+ }, {
+ name: 'netzbetreiberId'
+ }, {
+ name: 'mplId'
+ }, {
+ name: 'bezeichnung'
+ }, {
+ name: 'letzteAenderung',
+ type: 'date',
+ convert: function(v) {
+ if (!v) {
+ return v;
+ }
+ return new Date(v);
+ }
+ }, {
+ name: 'treeModified',
+ serialize: function(value) {
+ if (value === '') {
+ return null;
+ }
+ return value;
+ }
+ }, {
+ name: 'parentModified',
+ serialize: function(value) {
+ if (value === '') {
+ return null;
+ }
+ return value;
+ }
+ }],
+
+ idProperty: 'id',
+
+ proxy: {
+ type: 'rest',
+ url: 'lada-server/messprogrammkategorie',
+ reader: {
+ type: 'json',
+ root: 'data'
+ }
+ }
+});
diff -r ea477f62a667 -r fb99332bb48e app/model/Probenehmer.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/model/Probenehmer.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,78 @@
+/* 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.
+ */
+
+/**
+ * Model class for Probenehmer Stammdaten
+ */
+Ext.define('Lada.model.Probenehmer', {
+ extend: 'Ext.data.Model',
+
+ fields: [{
+ name: 'id'
+ }, {
+ name: 'netzbetreiberId'
+ }, {
+ name: 'prnId'
+ }, {
+ name: 'bearbeiter'
+ }, {
+ name: 'bemerkung'
+ }, {
+ name: 'bezeichnung'
+ }, {
+ name: 'kurzBezeichnung'
+ }, {
+ name: 'ort'
+ }, {
+ name: 'plz'
+ }, {
+ name: 'strasse'
+ }, {
+ name: 'telefon'
+ }, {
+ name: 'tp'
+ }, {
+ name: 'typ'
+ }, {
+ name: 'letzteAenderung',
+ type: 'date',
+ convert: function(v) {
+ if (!v) {
+ return v;
+ }
+ return new Date(v);
+ }
+ }, {
+ name: 'treeModified',
+ serialize: function(value) {
+ if (value === '') {
+ return null;
+ }
+ return value;
+ }
+ }, {
+ name: 'parentModified',
+ serialize: function(value) {
+ if (value === '') {
+ return null;
+ }
+ return value;
+ }
+ }],
+
+ idProperty: 'id',
+
+ proxy: {
+ type: 'rest',
+ url: 'lada-server/messprogrammkategorie',
+ reader: {
+ type: 'json',
+ root: 'data'
+ }
+ }
+});
diff -r ea477f62a667 -r fb99332bb48e app/model/Query.js
--- a/app/model/Query.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/model/Query.js Wed Dec 02 17:39:04 2015 +0100
@@ -24,5 +24,7 @@
name: 'results'
}, {
name: 'filters'
+ }, {
+ name: 'type'
}]
});
diff -r ea477f62a667 -r fb99332bb48e app/store/DatensatzErzeuger.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/store/DatensatzErzeuger.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,15 @@
+/* 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.
+ */
+
+/**
+ * Store for DatensatzErzeuger Stammdaten
+ */
+Ext.define('Lada.store.DatensatzErzeuger', {
+ extend: 'Ext.data.Store',
+ model: 'Lada.model.DatensatzErzeuger'
+});
diff -r ea477f62a667 -r fb99332bb48e app/store/MessprogrammKategorie.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/store/MessprogrammKategorie.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,15 @@
+/* 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.
+ */
+
+/**
+ * Store for MessprogrammKategorie Stammdaten
+ */
+Ext.define('Lada.store.MessprogrammKategorie', {
+ extend: 'Ext.data.Store',
+ model: 'Lada.model.MessprogrammKategorie'
+});
diff -r ea477f62a667 -r fb99332bb48e app/store/MessprogrammQueries.js
--- a/app/store/MessprogrammQueries.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/store/MessprogrammQueries.js Wed Dec 02 17:39:04 2015 +0100
@@ -12,7 +12,7 @@
Ext.define('Lada.store.MessprogrammQueries', {
extend: 'Ext.data.Store',
model: 'Lada.model.Query',
- autolad: true,
+ autoLoad: true,
proxy: {
type: 'rest',
url: 'lada-server/query/messprogramm',
diff -r ea477f62a667 -r fb99332bb48e app/store/MessprogrammeList.js
--- a/app/store/MessprogrammeList.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/store/MessprogrammeList.js Wed Dec 02 17:39:04 2015 +0100
@@ -7,7 +7,7 @@
*/
/**
- * Store for Messprogramme, it is used in the {@link Lada.view.grid.FilterResult}
+ * Store for Messprogramme, it is used in the {@link Lada.view.grid.MessprogrammeList}
*/
Ext.define('Lada.store.MessprogrammeList', {
extend: 'Ext.data.Store',
diff -r ea477f62a667 -r fb99332bb48e app/store/ProbenList.js
--- a/app/store/ProbenList.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/store/ProbenList.js Wed Dec 02 17:39:04 2015 +0100
@@ -7,7 +7,7 @@
*/
/**
- * Store for Proben, it is used in the {@link Lada.view.grid.FilterResult}
+ * Store for Proben, it is used in the {@link Lada.view.grid.ProbeList}
*/
Ext.define('Lada.store.ProbenList', {
extend: 'Ext.data.Store',
diff -r ea477f62a667 -r fb99332bb48e app/store/Probenehmer.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/store/Probenehmer.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,15 @@
+/* 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.
+ */
+
+/**
+ * Store for Probenehmer Stammdaten
+ */
+Ext.define('Lada.store.Probenehmer', {
+ extend: 'Ext.data.Store',
+ model: 'Lada.model.Probenehmer'
+});
diff -r ea477f62a667 -r fb99332bb48e app/store/StammdatenQueries.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/store/StammdatenQueries.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,29 @@
+/* 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.
+ */
+
+/**
+ * Store for Queries for Stammdaten
+ */
+Ext.define('Lada.store.StammdatenQueries', {
+ extend: 'Ext.data.Store',
+ model: 'Lada.model.Query',
+ autoLoad: true,
+ data: { data: [
+ {id: '0', name: 'MessprogrammKategorie', type: 'MessprogrammKategorie', sql: 'bogus', description: 'bogusBeschr', filters: []},
+ {id: '1', name: 'DatensatzErzeuger', type: 'DatensatzErzeuger', sql: 'bogus', description: 'bogusBeschr', filters: []}
+ ]},
+ proxy: {
+ type: 'memory',
+ //url: 'lada-server/query/stammdaten',
+ reader: {
+ type: 'json',
+ root: 'data'
+ }
+ }
+});
+
diff -r ea477f62a667 -r fb99332bb48e app/view/ProbenPlanungSwitcher.js
--- a/app/view/ProbenPlanungSwitcher.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/view/ProbenPlanungSwitcher.js Wed Dec 02 17:39:04 2015 +0100
@@ -30,9 +30,9 @@
items: [{
xtype: 'radiofield',
name: 'ppswitch',
- boxLabel: i18n.getMsg('probelist'),
- inputValue: 'ProbeList', //this determines the store
- // which will be loaded,
+ boxLabel: i18n.getMsg('proben'),
+ inputValue: 'proben', //this determines the store
+ // which will be loaded by the controller,
checked: true,
handler: function(field, state){
if (state === true) {
@@ -42,8 +42,18 @@
},{
xtype: 'radiofield',
name: 'ppswitch',
- boxLabel: i18n.getMsg('probeplanning'),
- inputValue: 'MessprogrammList', //name of a store
+ boxLabel: i18n.getMsg('messprogramme'),
+ inputValue: 'messprogramme',
+ handler: function(field, state){
+ if (state === true) {
+ this.fireEvent('check', field);
+ }
+ }
+ },{
+ xtype: 'radiofield',
+ name: 'ppswitch',
+ boxLabel: i18n.getMsg('stammdaten'),
+ inputValue: 'stammdaten',
handler: function(field, state){
if (state === true) {
this.fireEvent('check', field);
diff -r ea477f62a667 -r fb99332bb48e app/view/Viewport.js
--- a/app/view/Viewport.js Mon Nov 30 14:52:59 2015 +0100
+++ b/app/view/Viewport.js Wed Dec 02 17:39:04 2015 +0100
@@ -17,8 +17,7 @@
extend: 'Ext.container.Viewport',
requires: [
'Lada.view.ProbenPlanungSwitcher',
- 'Lada.view.FilterPanel',
- 'Lada.view.grid.FilterResult'
+ 'Lada.view.FilterPanel'
],
layout: 'fit',
initComponent: function() {
@@ -76,9 +75,11 @@
items: []
}]
}, {
- // Resultlist for the query.
+ xtype: 'panel',
+ border: 1,
+ layout: 'fit',
+ name: 'contentpanel',
flex: 3,
- xtype: 'filterresultgrid',
hidden: false,
region: 'center'
}]
diff -r ea477f62a667 -r fb99332bb48e app/view/grid/DatensatzErzeuger.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/view/grid/DatensatzErzeuger.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,126 @@
+/* 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.
+ */
+
+/**
+ * Grid to list DatensatzErzeuger Stammdaten
+ */
+Ext.define('Lada.view.grid.DatensatzErzeuger', {
+ extend: 'Ext.grid.Panel',
+ alias: 'widget.datensatzerzeugergrid',
+
+ // minHeight and deferEmptyText are needed to be able to show the
+ // emptyText message.
+ minHeight: 110,
+ viewConfig: {
+ deferEmptyText: false
+ },
+
+ warnings: null,
+ errors: null,
+ readOnly: true,
+ allowDeselect: true,
+
+ initComponent: function() {
+ var i18n = Lada.getApplication().bundle;
+ this.emptyText = i18n.getMsg('de.emptyGrid');
+
+ // TODO: Which docked Items are required?
+ this.dockedItems = [{
+ xtype: 'toolbar',
+ dock: 'top',
+ items: [{
+ xtype: 'tbtext',
+ id: 'tbtitle',
+ text: i18n.getMsg('de.gridTitle')
+ }]
+ }];
+
+ this.columns = [{
+ header: i18n.getMsg('netzbetreiberId'),
+ dataIndex: 'netzbetreiberId',
+ renderer: function(value) {
+ var r = '';
+ if (!value || value === '') {
+ r = 'Error';
+ }
+ var store = Ext.data.StoreManager.get('netzbetreiber');
+ var record = store.getById(value);
+ if (record) {
+ r = record.get('netzbetreiber');
+ }
+ return r;
+ },
+ editor: {
+ xtype: 'combobox',
+ store: Ext.data.StoreManager.get('netzbetreiber'),
+ displayField: 'netzbetreiber',
+ valueField: 'id',
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('daErzeugerId'),
+ dataIndex: 'daErzeugerId',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('mstId'),
+ dataIndex: 'mstId',
+ renderer: function(value) {
+ var r = '';
+ if (!value || value === '') {
+ r = 'Error';
+ }
+ var store = Ext.data.StoreManager.get('messstellen');
+ var record = store.getById(value);
+ if (record) {
+ r = record.get('messStelle');
+ }
+ return r;
+ },
+ editor: {
+ xtype: 'combobox',
+ store: Ext.data.StoreManager.get('messstellenFiltered'),
+ displayField: 'messStelle',
+ valueField: 'id',
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('letzteAenderung'),
+ dataIndex: 'letzteAenderung'
+ }];
+ this.listeners = {
+ select: {
+ fn: this.activateRemoveButton,
+ scope: this
+ },
+ deselect: {
+ fn: this.deactivateRemoveButton,
+ scope: this
+ }
+ };
+ this.callParent(arguments);
+ },
+
+ /**
+ * This sets the Store of this Grid
+ */
+ setStore: function(store){
+ var i18n = Lada.getApplication().bundle;
+
+ this.removeDocked(Ext.getCmp('ptbar'), true);
+ this.reconfigure(store);
+ this.addDocked([{
+ xtype: 'pagingtoolbar',
+ id: 'ptbar',
+ dock: 'bottom',
+ store: store,
+ displayInfo: true
+ }]);
+ }
+});
diff -r ea477f62a667 -r fb99332bb48e app/view/grid/FilterResult.js
--- a/app/view/grid/FilterResult.js Mon Nov 30 14:52:59 2015 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/* 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.
- */
-
-/**
- * Grid to list the result of the Filter
- */
-Ext.define('Lada.view.grid.FilterResult', {
- extend: 'Ext.grid.Panel',
- alias: 'widget.filterresultgrid',
-
- requires: 'Lada.view.window.DeleteProbe',
-
- store: null, //'ProbenList',
-
- multiSelect: true,
-
- viewConfig: {
- emptyText: 'Keine Ergebnisse gefunden.',
- deferEmptyText: false
- },
-
- initComponent: function() {
- var i18n = Lada.getApplication().bundle;
-
- this.dockedItems = [{
- xtype: 'toolbar',
- dock: 'top',
- items: [{
- xtype: 'tbtext',
- id: 'tbtitle',
- text: i18n.getMsg('probelist')
- },
- '->',
- {
- text: 'Probe erstellen',
- icon: 'resources/img/list-add.png',
- action: 'addProbe',
- disabled: false
- }, {
- text: 'Proben Importieren',
- icon: 'resources/img/svn-commit.png',
- action: 'import',
- disabled: false
- }, {
- text: 'Proben Exportieren',
- icon: 'resources/img/svn-update.png',
- action: 'export',
- disabled: true
- }, {
- text: 'Auswahl Drucken',
- icon: 'resources/img/printer.png',
- action: 'print',
- disabled: true
- },
- '-',
- {
- text: 'Messprogramm erstellen',
- icon: 'resources/img/list-add.png',
- action: 'addMessprogramm',
- disabled: true
- }, {
- text: 'Proben generieren',
- icon: 'resources/img/view-time-schedule-insert.png',
- action: 'genProbenFromMessprogramm',
- disabled: true
- }]
- }];
- this.columns = [];
- this.callParent(arguments);
- },
-
- /**
- * This sets the Store of the FilterResultGrid
- */
- setStore: function(store){
- var i18n = Lada.getApplication().bundle;
-
- this.removeDocked(Ext.getCmp('ptbar'), true);
- this.reconfigure(store);
- this.addDocked([{
- xtype: 'pagingtoolbar',
- id: 'ptbar',
- dock: 'bottom',
- store: store,
- displayInfo: true
- }]);
-
- //Configure the Toolbar.
- this.setMode(store);
- },
-
- /**
- * Enables or disables Toolbar-Buttons according to the selected mode
- */
- setMode: function(store) {
- var t = Ext.getCmp('tbtitle');
- var i18n = Lada.getApplication().bundle;
- if (store.model.modelName == 'Lada.model.ProbeList'){
- t.setText(i18n.getMsg('probelist'));
- this.down('button[action=addMessprogramm]').disable();
- this.down('button[action=genProbenFromMessprogramm]').disable();
- this.down('button[action=addProbe]').enable();
- this.down('button[action=import]').enable();
- this.down('button[action=export]').enable();
- this.down('button[action=print]').enable();
- }
- else if (store.model.modelName == 'Lada.model.MessprogrammList') {
- t.setText(i18n.getMsg('probeplanning'));
- this.down('button[action=addMessprogramm]').enable();
- this.down('button[action=genProbenFromMessprogramm]').enable();
- this.down('button[action=addProbe]').disable();
- this.down('button[action=import]').disable();
- this.down('button[action=export]').disable();
- this.down('button[action=print]').disable();
- }
- else {
- t.setText('');
- console.log('The model '+store.model.modelName+
- 'was not defined in the FilterResultGrid.' +
- ' Hence the title could not be set.');
- }
- },
-
- /**
- * Setup columns of the Grid dynamically based on a list of given cols.
- * The function is called from the {@link Lada.controller.Filter#search
- * search event}
- * The Images for the Read-Write Icon are defined in CSS
- */
- setupColumns: function(cols) {
- var resultColumns = [];
- var fields = [];
-
- fields.push(new Ext.data.Field({
- name: 'owner'
- }));
- fields.push(new Ext.data.Field({
- name: 'readonly'
- }));
-
- resultColumns.push({
- xtype: 'actioncolumn',
- text: 'RW',
- dataIndex: 'readonly',
- sortable: false,
- tooltip: 'Probe öffnen',
- width: 30,
- getClass: function (val, meta, rec) {
- return rec.get('readonly') === false ? "edit" : "noedit";
- },
- handler: function(grid, rowIndex, colIndex) {
- var rec = grid.getStore().getAt(rowIndex);
- grid.fireEvent('itemdblclick', grid, rec);
- }
- });
-
- for (var i = cols.length - 1; i >= 0; i--) {
- if (cols[i] === 'id') {
- continue;
- }
- resultColumns.push(cols[i]);
- fields.push(new Ext.data.Field({
- name: cols[i].dataIndex
- }));
- }
- if (this.store.$className == 'Lada.store.ProbenList') {
- // Add a Delete-Button
- // TODO: Might need to be extended to Messprogramme
- resultColumns.push({
- xtype: 'actioncolumn',
- text: 'Aktion',
- sortable: false,
- width: 30,
- items: [{
- icon: 'resources/img/edit-delete.png',
- tooltip: 'Löschen',
- isDisabled: function(grid, rowIndex, colIndex) {
- var rec = grid.getStore().getAt(rowIndex);
- if ( rec.get('readonly') || !rec.get('owner')) {
- return true;
- }
- return false;
- },
- handler: function(grid, rowIndex, colIndex){
- var rec = grid.getStore().getAt(rowIndex);
-
- var winname = 'Lada.view.window.DeleteProbe';
- var win = Ext.create(winname, {
- record: rec,
- parentWindow: this
- });
- win.show();
- win.initData();
- }
- }]
- });
- }
- this.store.model.setFields(fields);
- this.reconfigure(this.store, resultColumns);
- }
-});
diff -r ea477f62a667 -r fb99332bb48e app/view/grid/MessprogrammKategorie.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/view/grid/MessprogrammKategorie.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,110 @@
+/* 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.
+ */
+
+/**
+ * Grid to list MessprogrammKategorie Stammdaten
+ */
+Ext.define('Lada.view.grid.MessprogrammKategorie', {
+ extend: 'Ext.grid.Panel',
+ alias: 'widget.mkgrid',
+
+ // minHeight and deferEmptyText are needed to be able to show the
+ // emptyText message.
+ minHeight: 110,
+ viewConfig: {
+ deferEmptyText: false
+ },
+
+ warnings: null,
+ errors: null,
+ readOnly: true,
+ allowDeselect: true,
+
+ initComponent: function() {
+ var i18n = Lada.getApplication().bundle;
+ this.emptyText = i18n.getMsg('mk.emptyGrid');
+
+ // TODO: Which docked Items are required?
+ this.dockedItems = [{
+ xtype: 'toolbar',
+ dock: 'top',
+ items: [{
+ xtype: 'tbtext',
+ id: 'tbtitle',
+ text: i18n.getMsg('mk.gridTitle')
+ }]
+ }];
+
+ this.columns = [{
+ header: i18n.getMsg('netzbetreiberId'),
+ dataIndex: 'netzbetreiberId',
+ renderer: function(value) {
+ var r = '';
+ if (!value || value === '') {
+ r = 'Error';
+ }
+ var store = Ext.data.StoreManager.get('netzbetreiber');
+ var record = store.getById(value);
+ if (record) {
+ r = record.get('netzbetreiber');
+ }
+ return r;
+ },
+ editor: {
+ xtype: 'combobox',
+ store: Ext.data.StoreManager.get('netzbetreiber'),
+ displayField: 'netzbetreiber',
+ valueField: 'id',
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('mplId'),
+ dataIndex: 'mplId',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('bezeichnung'),
+ dataIndex: 'bezeichnung',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('letzteAenderung'),
+ dataIndex: 'letzteAenderung'
+ }];
+ this.listeners = {
+ select: {
+ fn: this.activateRemoveButton,
+ scope: this
+ },
+ deselect: {
+ fn: this.deactivateRemoveButton,
+ scope: this
+ }
+ };
+ this.callParent(arguments);
+ },
+
+ /**
+ * This sets the Store of this Grid
+ */
+ setStore: function(store){
+ var i18n = Lada.getApplication().bundle;
+
+ this.removeDocked(Ext.getCmp('ptbar'), true);
+ this.reconfigure(store);
+ this.addDocked([{
+ xtype: 'pagingtoolbar',
+ id: 'ptbar',
+ dock: 'bottom',
+ store: store,
+ displayInfo: true
+ }]);
+ }
+});
diff -r ea477f62a667 -r fb99332bb48e app/view/grid/MessprogrammeList.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/view/grid/MessprogrammeList.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,46 @@
+/* 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.
+ */
+
+/**
+ * Grid to list the result of the Filter
+ */
+Ext.define('Lada.view.grid.MessprogrammeList', {
+ extend: 'Lada.view.widget.DynamicGrid',
+ alias: 'widget.messprogrammelistgrid',
+
+ requires: 'Lada.view.window.DeleteProbe',
+
+ initComponent: function() {
+ var i18n = Lada.getApplication().bundle;
+ this.emptyText = i18n.getMsg('messprogramme.emptyGrid');
+
+ this.dockedItems = [{
+ xtype: 'toolbar',
+ dock: 'top',
+ items: [{
+ xtype: 'tbtext',
+ id: 'tbtitle',
+ text: i18n.getMsg('messprogramme.gridTitle')
+ },
+ '->',
+ {
+ text: i18n.getMsg('messprogramme.button.create'),
+ icon: 'resources/img/list-add.png',
+ action: 'addMessprogramm'
+ }, {
+ text: i18n.getMsg('messprogramme.button.generate'),
+ icon: 'resources/img/view-time-schedule-insert.png',
+ action: 'genProbenFromMessprogramm'
+ }]
+ }];
+ this.columns = [];
+ this.callParent(arguments);
+ }
+});
+
+
diff -r ea477f62a667 -r fb99332bb48e app/view/grid/ProbeList.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/view/grid/ProbeList.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,101 @@
+/* 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.
+ */
+
+/**
+ * Grid to list the result of the Filter
+ */
+Ext.define('Lada.view.grid.ProbeList', {
+ extend: 'Lada.view.widget.DynamicGrid',
+ alias: 'widget.probelistgrid',
+
+ requires: 'Lada.view.window.DeleteProbe',
+
+ initComponent: function() {
+ var i18n = Lada.getApplication().bundle;
+ this.emptyText = i18n.getMsg('probe.emptyGrid');
+
+ this.dockedItems = [{
+ xtype: 'toolbar',
+ dock: 'top',
+ items: [{
+ xtype: 'tbtext',
+ id: 'tbtitle',
+ text: i18n.getMsg('probe.gridTitle')
+ },
+ '->',
+ {
+ text: i18n.getMsg('probe.button.create'),
+ icon: 'resources/img/list-add.png',
+ action: 'addProbe',
+ disabled: false
+ }, {
+ text: i18n.getMsg('probe.button.import'),
+ icon: 'resources/img/svn-commit.png',
+ action: 'import',
+ disabled: false
+ }, {
+ text: i18n.getMsg('probe.button.export'),
+ icon: 'resources/img/svn-update.png',
+ action: 'export'
+ }, {
+ text: i18n.getMsg('probe.button.print'),
+ icon: 'resources/img/printer.png',
+ action: 'print'
+ }]
+ }];
+ this.columns = [];
+ this.callParent(arguments);
+ },
+
+ /**
+ * Setup columns of the Grid dynamically based on a list of given cols.
+ * The function is called from the {@link Lada.controller.Filter#search
+ * search event}
+ * The Images for the Read-Write Icon are defined in CSS
+ * This Method overrides setupColumns of the parents class,
+ * becaus the delete colum is required.
+ */
+ setupColumns: function(cols) {
+ var caf = this.generateColumnsAndFields(cols);
+ var columns = caf[0];
+ var fields = caf[1];
+ var i18n = Lada.getApplication().bundle;
+
+ columns.push({
+ xtype: 'actioncolumn',
+ text: i18n.getMsg('action'),
+ sortable: false,
+ width: 30,
+ items: [{
+ icon: 'resources/img/edit-delete.png',
+ tooltip: i18n.getMsg('delete'),
+ isDisabled: function(grid, rowIndex, colIndex) {
+ var rec = grid.getStore().getAt(rowIndex);
+ if ( rec.get('readonly') || !rec.get('owner')) {
+ return true;
+ }
+ return false;
+ },
+ handler: function(grid, rowIndex, colIndex){
+ var rec = grid.getStore().getAt(rowIndex);
+
+ var winname = 'Lada.view.window.DeleteProbe';
+ var win = Ext.create(winname, {
+ record: rec,
+ parentWindow: this
+ });
+ win.show();
+ win.initData();
+ }
+ }]
+ });
+ this.store.model.setFields(fields);
+ this.reconfigure(this.store, columns);
+ }
+});
+
diff -r ea477f62a667 -r fb99332bb48e app/view/grid/Probenehmer.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/view/grid/Probenehmer.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,245 @@
+/* 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.
+ */
+
+/**
+ * Grid to list Probenehmer Stammdaten
+ */
+Ext.define('Lada.view.grid.Probenehmer', {
+ extend: 'Ext.grid.Panel',
+ alias: 'widget.probenehmergrid',
+
+ // minHeight and deferEmptyText are needed to be able to show the
+ // emptyText message.
+ minHeight: 110,
+ viewConfig: {
+ deferEmptyText: false
+ },
+
+ warnings: null,
+ errors: null,
+ readOnly: true,
+ allowDeselect: true,
+
+ initComponent: function() {
+ var i18n = Lada.getApplication().bundle;
+ this.emptyText = i18n.getMsg('pn.emptyGrid');
+
+ // TODO: Which docked Items are required?
+ this.dockedItems = [{
+ xtype: 'toolbar',
+ dock: 'top',
+ items: [{
+ xtype: 'tbtext',
+ id: 'tbtitle',
+ text: i18n.getMsg('pn.gridTitle')
+ }]
+ /*
+ //bottom toolbar?
+ }, {
+ xtype: 'toolbar',
+ dock: 'bottom',
+ items: ['->', {
+ text: 'Hinzufügen',
+ icon: 'resources/img/list-add.png',
+ action: 'add',
+ probeId: this.probeId
+ }, {
+ text: 'Löschen',
+ icon: 'resources/img/list-remove.png',
+ action: 'delete'
+ }]
+ */
+ }];
+ /*
+ // Do we have row-editing
+ this.rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
+ clicksToMoveEditor: 1,
+ autoCancel: false,
+ disabled: false,
+ pluginId: 'rowedit',
+ listeners:{
+ // Make row ineditable when readonly is set to true
+ // Normally this would belong into a controller an not the view.
+ // But the RowEditPlugin is not handled there.
+ beforeedit: function(e, o) {
+ var readonlywin = o.grid.up('window').record.get('readonly');
+ var readonlygrid = o.record.get('readonly');
+ if (readonlywin == true || readonlygrid == true || this.disabled) {
+ return false;
+ }
+ return true;
+ }
+ }
+ });
+ this.plugins = [this.rowEditing];
+ */
+ this.columns = [{
+ header: i18n.getMsg('netzbetreiberId'),
+ dataIndex: 'netzbetreiberId',
+ renderer: function(value) {
+ var r = '';
+ if (!value || value === '') {
+ r = 'Error';
+ }
+ var store = Ext.data.StoreManager.get('netzbetreiber');
+ var record = store.getById(value);
+ if (record) {
+ r = record.get('netzbetreiber');
+ }
+ return r;
+ },
+ editor: {
+ xtype: 'combobox',
+ store: Ext.data.StoreManager.get('netzbetreiber'),
+ displayField: 'netzbetreiber',
+ valueField: 'id',
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('bearbeiter'),
+ dataIndex: 'bearbeiter',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('prnId'),
+ dataIndex: 'prnId',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('bemerkung'),
+ dataIndex: 'bemerkung',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('kurzBezeichnung'),
+ dataIndex: 'kurzBezeichnung',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('ort'),
+ dataIndex: 'ort',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('plz'),
+ dataIndex: 'plz',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('strasse'),
+ dataIndex: 'strasse',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('telefon'),
+ dataIndex: 'telefon',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('tp'),
+ dataIndex: 'tp',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('typ'),
+ dataIndex: 'typ',
+ editor: {
+ allowBlank: false
+ }
+ }, {
+ header: i18n.getMsg('letzteAenderung'),
+ dataIndex: 'letzteAenderung'
+ }];
+ this.listeners = {
+ select: {
+ fn: this.activateRemoveButton,
+ scope: this
+ },
+ deselect: {
+ fn: this.deactivateRemoveButton,
+ scope: this
+ }
+ };
+ // this.initData(); //This will be called by the Query Component.
+ this.callParent(arguments);
+ //TODO this.setReadOnly(true); //Grid is always initialised as RO
+ },
+
+ initData: function() {
+ this.store = Ext.create('Lada.store.DatensatzErzeuger');
+ this.store.load(); //TODO: Params?
+ },
+
+ setReadOnly: function(b) {
+ if (b == true){
+ //Readonly
+ if (this.getPlugin('rowedit')){
+ this.getPlugin('rowedit').disable();
+ }
+ try {
+ this.down('button[action=delete]').disable();
+ this.down('button[action=add]').disable();
+ }
+ catch(e) {
+ //TODO: Do Nothing...
+ }
+ }else{
+ //Writable
+ if (this.getPlugin('rowedit')){
+ this.getPlugin('rowedit').enable();
+ }
+ try {
+ this.down('button[action=delete]').enable();
+ this.down('button[action=add]').enable();
+ }
+ catch(e) {
+ //TODO: Do Nothing...
+ }
+ }
+ },
+ /**
+ * Activate the Remove Button
+ */
+ activateRemoveButton: function(selection, record) {
+ var grid = this;
+ //only enable the remove buttone, when the grid is editable.
+ if (! grid.readOnly) {
+ try {
+ grid.down('button[action=delete]').enable();
+ }
+ catch(e) {
+ //TODO: Do Nothing
+ }
+ }
+ },
+ /**
+ * deactivate the Remove Button
+ */
+ deactivateRemoveButton: function(selection, record) {
+ var grid = this;
+ //only enable the remove buttone, when the grid is editable.
+ if (! grid.readOnly) {
+ try {
+ grid.down('button[action=delete]').disable();
+ }
+ catch(e) {
+ //TODO: Do Nothing
+ }
+ }
+ }
+});
+
diff -r ea477f62a667 -r fb99332bb48e app/view/widget/DynamicGrid.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/view/widget/DynamicGrid.js Wed Dec 02 17:39:04 2015 +0100
@@ -0,0 +1,108 @@
+/* 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.
+ */
+
+/**
+ * Grid to list the result of the Filter
+ */
+Ext.define('Lada.view.widget.DynamicGrid', {
+ extend: 'Ext.grid.Panel',
+
+ store: null,
+
+ multiSelect: true,
+
+ viewConfig: {
+ deferEmptyText: false
+ },
+
+ initComponent: function() {
+ var i18n = Lada.getApplication().bundle;
+ this.callParent(arguments);
+ },
+
+ /**
+ * This sets the Store of the DynamicGrid
+ */
+ setStore: function(store){
+ var i18n = Lada.getApplication().bundle;
+
+ this.removeDocked(Ext.getCmp('ptbar'), true);
+ this.reconfigure(store);
+ this.addDocked([{
+ xtype: 'pagingtoolbar',
+ id: 'ptbar',
+ dock: 'bottom',
+ store: store,
+ displayInfo: true
+ }]);
+
+ },
+
+ /**
+ * Setup columns of the Grid dynamically based on a list of given cols.
+ * The function is called from the {@link Lada.controller.Filter#search
+ * search event}
+ * The Images for the Read-Write Icon are defined in CSS
+ */
+ setupColumns: function(cols) {
+ var caf = this.generateColumnsAndFields(cols);
+ var columns = caf[0];
+ var fields = caf[1];
+ this.store.model.setFields(fields);
+ this.reconfigure(this.store, columns);
+ },
+
+ /**
+ * generateColumnsAndFields
+ * generates an array of columns which are used for the dynamic grid
+ * @return an array of two arrays: [0] is an array of colums [1] an array
+ * of fields
+ **/
+ generateColumnsAndFields: function(cols) {
+ var resultColumns = [];
+ var fields = [];
+
+ fields.push(new Ext.data.Field({
+ name: 'owner'
+ }));
+ fields.push(new Ext.data.Field({
+ name: 'readonly'
+ }));
+
+ resultColumns.push({
+ xtype: 'actioncolumn',
+ text: 'RW',
+ dataIndex: 'readonly',
+ sortable: false,
+ tooltip: 'Probe öffnen',
+ width: 30,
+ getClass: function (val, meta, rec) {
+ return rec.get('readonly') === false ? "edit" : "noedit";
+ },
+ handler: function(grid, rowIndex, colIndex) {
+ var rec = grid.getStore().getAt(rowIndex);
+ grid.fireEvent('itemdblclick', grid, rec);
+ }
+ });
+
+ for (var i = cols.length - 1; i >= 0; i--) {
+ if (cols[i] === 'id') {
+ continue;
+ }
+ resultColumns.push(cols[i]);
+ fields.push(new Ext.data.Field({
+ name: cols[i].dataIndex
+ }));
+ }
+ var caf = new Array();
+ caf[0] = resultColumns;
+ caf[1] = fields;
+ return caf;
+ }
+});
+
diff -r ea477f62a667 -r fb99332bb48e resources/i18n/Lada_de-DE.properties
--- a/resources/i18n/Lada_de-DE.properties Mon Nov 30 14:52:59 2015 +0100
+++ b/resources/i18n/Lada_de-DE.properties Wed Dec 02 17:39:04 2015 +0100
@@ -38,9 +38,13 @@
probenartId:Probenart
probeentnahmeBeginn:Probeentnahme Beginn
+##
+# Modus
+##
modus:Modus
-probeplanning:Messprogramme
-probelist:Proben
+messprogramme:Messprogramme
+proben:Proben
+stammdaten:Stammdaten
name:Name
mstId:Messstelle
@@ -65,6 +69,21 @@
from:Von
to:Bis
offset:Offset
+letzteAenderung:Letzte Änderung
+bezeichnung:Bezeichnung
+mplId:mplID-TODOTEXT
+daErzeugerId:daErzeugerId-TODOTEXT
+prnId:prnId-TODOTEXT
+bearbeiter:bearbeiter-TODOTEXT
+bemerkung:bemerkung-TODOTEXT
+kurzBezeichnung:kurzBezeichnung-TODOTEXT
+ort:ort-TODOTEXT
+plz:plz-TODOTEXT
+strasse:strasse-TODOTEXT
+telefon:telefon-TODOTEXT
+tp:tp-TODOTEXT
+typ:typ-TODOTEXT
+
emptytext.probenintervall:Wählen Sie ein Probenintervall
emptytext.datenbasis:Wählen Sie eine Datenbasis
@@ -121,11 +140,14 @@
messprogtimeperiod:für den Zeitraum
select:Auswählen
apply:Übernehmen
+action:Aktion
+remove:Entfernen
delete.probe.window.title:Probe und ihre Messungen Löschen?
delete.probe:Wollen Sie die Probe und alle damit verbundenen Messungen wirklich LÖSCHEN?
delete.probe.warning:ACHTUNG: Diese Aktion kann nicht rückgängig gemacht werden.
+undefined:Nicht definiert
##
# Msg:
@@ -156,3 +178,39 @@
pi.weekly:wöchentlich
pi.daily:täglich
intervall:Intervall
+
+##
+# ProbeList Grid:
+##
+probe.emptyGrid:Keine Proben gefunden.
+probe.gridTitle:Proben
+probe.button.create:Probe erstellen
+probe.button.import:Probe importieren
+probe.button.export:Probe exportieren
+probe.button.print:Auswahl drucken
+
+##
+# MessprogrammeList Grid:
+##
+messprogramme.emptyGrid:Keine Messprogramme gefunden.
+messprogramme.gridTitle:Messprogramme
+messprogramme.button.create:Messprogramm erstellen
+messprogramme.button.generate:Proben generieren
+
+##
+# DatensatzErzeuger Grid:
+##
+de.emptyGrid:Keine DatensatzErzeuger gefunden.
+de.gridTitle:Datensatzerzeuger
+
+##
+# MessprogrammKategorie Grid:
+##
+mk.emptyGrid:Keine Messprogrammkategorie gefunden.
+mk.gridTitle:Messprogramm Kategorien
+
+##
+# Probenehmer Grid:
+##
+pn.emptyGrid:Keine Probenehmer gefunden.
+pn.gridTitle:Probenehmer
More information about the Lada-commits
mailing list