# HG changeset patch # User Torsten Irländer # Date 1376648451 -7200 # Node ID cebed9ef8293e684014c4f06061beaf2f4e4daca # Parent cec9fe8d0000820cc98915fb66237a078025e417 Dynamically add configured search filters. Send needed values to the server. diff -r cec9fe8d0000 -r cebed9ef8293 app/controller/Sql.js --- a/app/controller/Sql.js Fri Aug 16 11:13:17 2013 +0200 +++ b/app/controller/Sql.js Fri Aug 16 12:20:51 2013 +0200 @@ -10,6 +10,11 @@ 'Proben', // List of found Proben 'Queries' ], + requires: [ + 'Lada.view.widgets.Mst', + 'Lada.view.widgets.Uwb', + 'Lada.view.widgets.Datetime' + ], init: function() { console.log('Initialising the Sql controller'); this.control({ @@ -56,22 +61,52 @@ // Setup Columns of the probenlist result.setupColumns(displayFields); - // Setup Columns of the probenlist - if (filterFields.length > 0) { - var items = filters.items.items; - for (var i=0; i < items.length; i++) { - var filtername = items[i].id; - items[i].hide(); - for (var j=0; j < filterFields.length; j++) { - if ('filter-'+filterFields[j].dataIndex === filtername) { - items[i].show(); - } - } + // Setup Filters of the probenlist + // + // Allowed types are + // * text + // * number + // * datetime + // * listmst + // * listumw + // + // Iterate over all configured filters and add filters dynamically + // + // 1. Empty filters + filters.removeAll(); + var hide = true; + // 2. Iterate over all configured filters + for (var j=0; j < filterFields.length; j++) { + var type = filterFields[j].type; + var name = filterFields[j].dataIndex; + var label = filterFields[j].label; + var field = null; + if (type == "text") { + console.log("Found text filter"); + field = Ext.create('Ext.form.field.Text', { name: name, fieldLabel: label }); + } else if (type == "number") { + console.log("Found number filter"); + field = Ext.create('Ext.form.field.Number', { name: name, fieldLabel: label }); + } else if (type == "datetime") { + console.log("Found datetime filter"); + field = Ext.create('Lada.view.widgets.Datetime', { name: name, fieldLabel: label }); + } else if (type == "listmst") { + console.log("Found listmst filter"); + field = Ext.create('Lada.view.widgets.Mst', { name: name, fieldLabel: label }); + } else if (type == "listumw") { + console.log("Found listumw filter"); + field = Ext.create('Lada.view.widgets.Uwb', { name: name, fieldLabel: label }); } - filters.show(); - } else { + if (field) { + console.log("Pushing field to filters"); + filters.add(field); + filters.show(); + hide = false; + } + } + if (hide) { filters.hide(); - }; + } buttons.show(); }, /** @@ -80,27 +115,20 @@ */ search: function(element, record, index) { var result = Ext.getCmp('result'); - console.log('Loading store'); + var filters = Ext.getCmp('queryfilters'); + var search = Ext.getCmp('search'); // Get search parameters: var searchParams = {}; - if (Ext.getCmp('search').getValue() == 1) { - var mst = Ext.getCmp('filter-mstId').getValue(); - var uwb = Ext.getCmp('filter-umwId').getValue(); - if (mst !== null) { - searchParams['mstId'] = mst; - } - if (uwb !== null) { - searchParams['umwId'] = uwb; - } - } else { - // Get date object an convert it into a timestamp (ms since epoch) - var datefield = Ext.getCmp('filter-pbegin').getValue(); - if (datefield !== null) { - var ts = Ext.getCmp('filter-pbegin').getValue().getTime(); - searchParams['begin'] = ts; + searchParams['qid'] = search.getValue(); + for (var i = filters.items.length - 1; i >= 0; i--){ + var filter = filters.items.items[i]; + var value = filter.getValue(); + if (value) { + searchParams[filter.getName()] = filter.getValue(); } } + console.log('Loading store with the following search params: ' + searchParams); result.getStore().load({ params: searchParams }); diff -r cec9fe8d0000 -r cebed9ef8293 app/view/Viewport.js --- a/app/view/Viewport.js Fri Aug 16 11:13:17 2013 +0200 +++ b/app/view/Viewport.js Fri Aug 16 12:20:51 2013 +0200 @@ -10,10 +10,7 @@ requires: [ 'Lada.store.Info', 'Lada.view.search.List', - 'Lada.view.proben.List', - 'Lada.view.widgets.Mst', - 'Lada.view.widgets.Uwb', - 'Lada.view.widgets.Datetime' + 'Lada.view.proben.List' ], initComponent: function() { console.log('Setting up Viewport'); @@ -161,6 +158,7 @@ // Auswahl einer Abfrage. { xtype: 'queryselector', + id: 'queryselector', margin: '0 0 10 0' }, // Variables settings for the current selected sql statement. @@ -169,29 +167,7 @@ id: 'queryfilters', title: 'Variablenbelegung', hidden: true, - items: [ - { - id: 'filter-mstId', - xtype: 'mst', - fieldLabel: 'Messstelle', - labelWidth: 100, - hidden: true - }, - { - id: 'filter-umwId', - xtype: 'uwb', - fieldLabel: 'Umweltbereich', - labelWidth: 100, - hidden: true - }, - { - id: 'filter-pbegin', - xtype: 'datetime', - fieldLabel: 'Probenbeginn', - labelWidth: 100, - hidden: true - } - ] + items: [] }, // Buttons to trigger the search. {