changeset 1308:6075731bc4f1

Added column filter to orte grid.
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 02 Feb 2017 16:43:53 +0100
parents 152fca74a839
children 1bcc3a62e909
files app.js app/override/StringFilter.js app/view/grid/Orte.js app/view/window/Ortszuordnung.js install-dependencies.sh
diffstat 5 files changed, 121 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/app.js	Thu Feb 02 15:46:05 2017 +0100
+++ b/app.js	Thu Feb 02 16:43:53 2017 +0100
@@ -11,7 +11,8 @@
     paths: {
         'Ext.i18n': 'resources/lib/ext/i18n/',
         'Ext.ux.upload': 'resources/lib/ext/upload',
-        'Ext.ux.util': 'resources/lib/ext/util'
+        'Ext.ux.util': 'resources/lib/ext/util',
+        'Ext.ux.grid': 'resources/lib/ext/grid'
     }
 });
 
@@ -31,6 +32,7 @@
         'Lada.override.i18n.DE',
         'Lada.override.JSON',
         'Lada.override.RowExpander',
+        'Lada.override.StringFilter',
         'Lada.view.plugin.GridRowExpander',
         'Ext.i18n.Bundle',
         'Ext.layout.container.Column',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/override/StringFilter.js	Thu Feb 02 16:43:53 2017 +0100
@@ -0,0 +1,33 @@
+/* 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.override.StringFilter', {
+    override: 'Ext.ux.grid.filter.StringFilter',
+
+    validateRecord: function(record) {
+        if (this.dataIndex === 'gemId') {
+            var store = Ext.data.StoreManager.get('verwaltungseinheiten');
+            var item = store.getById(record.get('gemId'));
+            var comp = item.get('bezeichnung');
+            return comp.toLowerCase().indexOf(this.getValue().toLowerCase()) > -1;
+        }
+        else if (this.dataIndex === 'staatId') {
+            var store = Ext.data.StoreManager.get('staaten');
+            var item = store.getById(record.get('staatId'));
+            var comp = item.get('staatIso');
+            return comp.toLowerCase().indexOf(this.getValue().toLowerCase()) > -1;
+        }
+        else {
+            var val = record.get(this.dataIndex);
+            if(typeof val != 'string') {
+                return (this.getValue().length === 0);
+            }
+            return val.toLowerCase().indexOf(this.getValue().toLowerCase()) > -1;
+        }
+    }
+});
--- a/app/view/grid/Orte.js	Thu Feb 02 15:46:05 2017 +0100
+++ b/app/view/grid/Orte.js	Thu Feb 02 16:43:53 2017 +0100
@@ -13,6 +13,9 @@
     extend: 'Ext.grid.Panel',
     alias: 'widget.ortstammdatengrid',
 
+    requires: [
+        'Ext.ux.grid.FiltersFeature'
+    ],
     // minHeight and deferEmptyText are needed to be able to show the
     // emptyText message.
     minHeight: 110,
@@ -27,6 +30,7 @@
     readOnly: true,
     allowDeselect: true,
     editableGrid: true,
+    features: [],
 
     initComponent: function() {
         var i18n = Lada.getApplication().bundle;
@@ -42,6 +46,21 @@
             this.plugins = [this.rowEditing];
         }
 
+        filters = {
+            ftype: 'filters',
+            // encode and local configuration options defined previously for easier reuse
+            encode: false, // json encode the filter query
+            local: true,   // defaults to false (remote filtering)
+
+            // Filters are most naturally placed in the column definition, but can also be
+            // added here.
+            filters: [{
+                type: 'boolean',
+                dataIndex: 'visible'
+            }]
+        };
+        this.features = [filters];
+
         this.columns = [{
             xtype: 'actioncolumn',
             text: 'RW',
@@ -83,6 +102,9 @@
                 maxLength: 10,
                 allowBlank: false
             },
+            filter: {
+                type: 'string'
+            },
             dataIndex: 'ortId'
         }, {
             header: i18n.getMsg('orte.nutsCode'),
@@ -90,6 +112,9 @@
                 xtype: 'textfield',
                 maxLength: 10
             },
+            filter: {
+                type: 'string'
+            },
             dataIndex: 'nutsCode'
         }, {
             header: i18n.getMsg('orte.anlageId'),
@@ -101,6 +126,9 @@
             header: i18n.getMsg('orte.verwaltungseinheit'),
             dataIndex: 'gemId',
             width: 120,
+            filter: {
+                type: 'string'
+            },
             renderer: function(value) {
                 if (!value) {
                     return '';
@@ -120,6 +148,9 @@
             header: i18n.getMsg('orte.staatId'),
             dataIndex: 'staatId',
             width: 70,
+            filter: {
+                type: 'string'
+            },
             renderer: function(value) {
                 if (value === undefined || value === '') {
                     return '';
@@ -137,6 +168,9 @@
             }
         }, {
             header: i18n.getMsg('orte.kdaId'),
+            filter: {
+                type: 'numeric'
+            },
             editor: {
                 xtype: 'numberfield',
                 allowBlank: false
@@ -144,12 +178,21 @@
             dataIndex: 'kdaId'
         }, {
             header: i18n.getMsg('orte.ozId'),
+            filter: {
+                type: 'string'
+            },
             dataIndex: 'ozId'
         }, {
             header: i18n.getMsg('orte.ortTyp'),
+            filter: {
+                type: 'numeric'
+            },
             dataIndex: 'ortTyp'
         }, {
             header: i18n.getMsg('orte.mpArt'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 10
@@ -157,6 +200,9 @@
             dataIndex: 'mpArt'
         }, {
             header: i18n.getMsg('orte.zone'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 1
@@ -164,6 +210,9 @@
             dataIndex: 'zone'
         }, {
             header: i18n.getMsg('orte.sektor'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 2
@@ -171,6 +220,9 @@
             dataIndex: 'sektor'
         }, {
             header: i18n.getMsg('orte.zustaendigkeit'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 10
@@ -178,6 +230,9 @@
             dataIndex: 'zustaendigkeit'
         }, {
             header: i18n.getMsg('orte.berichtstext'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 70
@@ -185,6 +240,9 @@
             dataIndex: 'berichtstext'
         }, {
             header: i18n.getMsg('orte.kurztext'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 15,
@@ -193,6 +251,9 @@
             dataIndex: 'kurztext'
         }, {
             header: i18n.getMsg('orte.langtext'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 100,
@@ -201,18 +262,27 @@
             dataIndex: 'langtext'
         }, {
             header: i18n.getMsg('orte.unscharf'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield'
             },
             dataIndex: 'unscharf'
         }, {
             header: i18n.getMsg('orte.hoeheLand'),
+            filter: {
+                type: 'numeric'
+            },
             editor: {
                 xtype: 'numberfield'
             },
             dataIndex: 'hoeheLand'
         }, {
             header: i18n.getMsg('orte.koordXExtern'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 22,
@@ -221,6 +291,9 @@
             dataIndex: 'koordXExtern'
         }, {
             header: i18n.getMsg('orte.koordYExtern'),
+            filter: {
+                type: 'string'
+            },
             editor: {
                 xtype: 'textfield',
                 maxLength: 22,
@@ -229,18 +302,27 @@
             dataIndex: 'koordYExtern'
         }, {
             header: i18n.getMsg('orte.longitude'),
+            filter: {
+                type: 'numeric'
+            },
             editor: {
                 xtype: 'numberfield'
             },
             dataIndex: 'longitude'
         }, {
             header: i18n.getMsg('orte.latitude'),
+            filter: {
+                type: 'numeric'
+            },
             editor: {
                 xtype: 'numberfield'
             },
             dataIndex: 'latitude'
         }, {
             header: i18n.getMsg('letzteAenderung'),
+            filter: {
+                type: 'date'
+            },
             xtype: 'datecolumn',
             format: 'd.m.Y H:i',
             dataIndex: 'letzteAenderung'
--- a/app/view/window/Ortszuordnung.js	Thu Feb 02 15:46:05 2017 +0100
+++ b/app/view/window/Ortszuordnung.js	Thu Feb 02 16:43:53 2017 +0100
@@ -130,7 +130,7 @@
                 layout: 'fit',
                 name: 'ortgrid',
                 hidden: true,
-                maxHeight: 240,
+                height: 240,
                 items: [{
                     xtype: 'ortstammdatengrid'
                 }],
--- a/install-dependencies.sh	Thu Feb 02 15:46:05 2017 +0100
+++ b/install-dependencies.sh	Thu Feb 02 16:43:53 2017 +0100
@@ -39,4 +39,6 @@
 unzip -n Ext-ux-Upload-1-1-1.zip
 ln -sf extjs-upload-widget-1.1.1/lib/upload upload
 
+ln -sf ../../../extjs/examples/ux/grid grid
+
 cd $CUR_DIR

http://lada.wald.intevation.org