more filter work, did some testing, cleaned up some unused code
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 1 Oct 2006 01:26:23 +0000 (01:26 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 1 Oct 2006 01:26:23 +0000 (01:26 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6301 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/reports/oils_rpt.css
Open-ILS/web/reports/oils_rpt_builder.js
Open-ILS/web/reports/oils_rpt_builder.xhtml
Open-ILS/web/reports/oils_rpt_builder_widgets.js
Open-ILS/web/reports/oils_rpt_ops.xhtml
Open-ILS/web/reports/oils_rpt_tforms.xhtml
Open-ILS/web/reports/oils_rpt_utils.js

index 0f0ed62..f619ac0 100644 (file)
@@ -269,6 +269,9 @@ button {
        width: 100%;
 }
 
+#oils_rpt_name_table tr { border: 1px solid #808080; }
+#oils_rpt_name_table td { padding: 5px; }
+
 
 
 .oils_rpt_table_row_borders { width: 100%; }
index b5a32bf..6426cd4 100644 (file)
@@ -6,7 +6,6 @@ function oilsInitReportBuilder() {
        oilsReportBuilderReset();
        DOM.oils_rpt_table.onclick = 
                function(){hideMe(DOM.oils_rpt_column_editor)};
-       //oilsRptBuildCalendars();
        oilsDrawRptTree(
                function() { 
                        hideMe(DOM.oils_rpt_tree_loading); 
@@ -30,26 +29,6 @@ function oilsReportBuilderReset() {
 }
 
 
-/*
-function oilsRptBuildCalendars() {
-       Calendar.setup({
-               inputField  : "oils_rpt_filter_tform_timestamp_input", // id of the input field
-               ifFormat    : "%Y-%m-%d", // format of the input field
-               button      : "oils_rpt_filter_tform_timestamp_cal",  // trigger for the calendar (button ID)
-               align       : "Tl", // alignment (defaults to "Bl")
-               singleClick : true
-       });
-       Calendar.setup({
-               inputField  : "oils_rpt_filter_tform_timestamp_input_2", // id of the input field
-               ifFormat    : "%Y-%m-%d", // format of the input field
-               button      : "oils_rpt_filter_tform_timestamp_cal2",  // trigger for the calendar (button ID)
-               align       : "Tl", // alignment (defaults to "Bl")
-               singleClick : true
-       });
-}
-*/
-
-
 /* adds an item to the display window */
 function oilsAddRptDisplayItem(path, name, tform, params) {
        if( ! oilsAddSelectorItem(oilsRptDisplaySelector, path, name) ) 
@@ -151,18 +130,9 @@ function oilsDelSelectedDisplayItems() {
                                var d = list[j];
                                var col = i.column;
 
-                               /* if this columsn has a transform, 
-                                       it will be an object { tform => column } */
-                               if( typeof col != 'string' ) 
-                                       for( var c in col ) col = col[c];
-
-                               /* if this transform requires params, the column 
-                                       will be the first item in the param set array */
-                               if( typeof col != 'string' ) col = col[0];
-
-                               if( oilsRptPathRel(d) == i.relation && oilsRptPathCol(d) == col ) {
-                                       var param = (i.alias) ? i.alias.match(/::PARAM\d*/) : null;
-                                       if( param ) delete oilsRpt.params[param];
+                               if( oilsRptPathRel(d) == i.relation && oilsRptPathCol(d) == col.colname ) {
+                                       //var param = (i.alias) ? i.alias.match(/::PARAM\d*/) : null;
+                                       //      if( param ) delete oilsRpt.params[param];
                                        return false;
                                }
                        }
@@ -172,7 +142,7 @@ function oilsDelSelectedDisplayItems() {
 
        if(!oilsRpt.def.select) {
                oilsRpt.def.select = [];
-               oilsReportBuilderReset();
+               //oilsReportBuilderReset();
 
        } else {
                for( var j = 0; j < list.length; j++ ) 
@@ -224,14 +194,27 @@ function oilsRptPruneFromClause(relation, node) {
 }
 
 /* adds an item to the display window */
-function oilsAddRptFilterItem(val) {
-       oilsAddSelectorItem(oilsRptFilterSelector, val);
+function oilsAddRptFilterItem(path, tform, filter) {
+       _debug("Adding filter item for "+path+" tform="+tform+" filter="+filter);
+       if( ! oilsAddSelectorItem(oilsRptFilterSelector, path) )
+               return;
+
+       var where = {
+               relation: oilsRptPathRel(path), 
+               column:   { transform: tform, colname: oilsRptPathCol(path) },
+               condition : {}
+       };
+       where.condition[filter] = oilsRptNextParam();
+
+       oilsRpt.def.where.push(where);
+       mergeObjects( oilsRpt.def.from, oilsRptBuildFromClause(path));
+       oilsRptDebug();
 }
 
 /* removes a specific item from the display window */
-function oilsDelFilterItem(val) {
-       oilsDelSelectorItem(oilsRptFilterSelector, val);
-}
+//function oilsDelFilterItem(path) {
+       //oilsDelSelectorItem(oilsRptFilterSelector, path);
+//}
 
 /* removes selected items from the display window */
 function oilsDelSelectedFilterItems() {
@@ -244,16 +227,7 @@ function oilsDelSelectedFilterItems() {
                                var d = list[j];
                                var col = i.column;
 
-                               /* if this columsn has a transform, 
-                                       it will be an object { tform => column } */
-                               if( typeof col != 'string' ) 
-                                       for( var c in col ) col = col[c];
-
-                               /* if this transform requires params, the column 
-                                       will be the first item in the param set array */
-                               if( typeof col != 'string' ) col = col[0];
-
-                               if( oilsRptPathRel(d) == i.relation && oilsRptPathCol(d) == col ) {
+                               if( oilsRptPathRel(d) == i.relation && oilsRptPathCol(d) == col.colname ) {
                                        var param = (i.alias) ? i.alias.match(/::PARAM\d*/) : null;
                                        if( param ) delete oilsRpt.params[param];
                                        return false;
@@ -265,7 +239,7 @@ function oilsDelSelectedFilterItems() {
 
        if(!oilsRpt.def.where) {
                oilsRpt.def.where = [];
-               oilsReportBuilderReset();
+               //oilsReportBuilderReset();
 
        } else {
                for( var j = 0; j < list.length; j++ ) 
@@ -446,9 +420,39 @@ function oilsRptSetDataWindowActions(div) {
 
 
 function oilsRptDrawFilterWindow(path, col, cls, field) {
+       DOM.oils_rpt_filter_submit.onclick = function() {
+               var tsel = $n(DOM.oils_rpt_filter_tform_table,'selector');
+               var fsel = $n(DOM.oils_rpt_filter_op_table,'selector');
+               var tform = getSelectorVal(tsel);
+               var filter = getSelectorVal(fsel);
+               oilsAddRptFilterItem(path, tform, filter);
+       }
+       oilsRptShowFilters($n(DOM.oils_rpt_filter_tform_table,'selector'), field.datatype, false, true);
+               
+       /*
        oilsRptCurrentFilterTform = new oilsRptTFormManager(DOM.oils_rpt_filter_tform_table);
        oilsRptCurrentFilterTform.build(field.datatype, false, true);
        oilsRptCurrentFilterOpManager = new oilsRptOpManager(DOM.oils_rpt_filter_op_table);
+       */
+}
+
+function oilsRptShowFilters( selector, dtype, show_agg, show_noagg ) {
+       for( var i = 0; i < selector.options.length; i++ ) {
+               var opt = selector.options[i];
+               var t = opt.getAttribute('datatype');
+               if( t && t != dtype ){
+                       hideMe(opt);
+               } else {
+                       var ag = opt.getAttribute('aggregate');
+                       if( ag && show_agg )
+                               unHideMe(opt);
+                       else if( ag && ! show_agg )
+                               hideMe(opt)
+                       else if( !ag && show_noagg )
+                               unHideMe(opt);
+                       else hideMe(opt);
+               }
+       }
 }
 
 
@@ -459,31 +463,30 @@ function oilsRptDrawTransformWindow(path, col, cls, field) {
 
        DOM.oils_rpt_tform_submit.onclick = 
                function(){ 
-                       /*
-                       var tform = oilsRptGetTform(dtype);
-                       _debug('found tform: ' + js2JSON(tform));
-                       var params = getRptTformParams(dtype, tform);
-                       _debug('found tform params: ' + js2JSON(params));
-                       tform = (tform == 'raw') ? null : tform;
-                       */
-
-                       var tform = oilsRptCurrentTform.getCurrentTForm();
-                       oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value, tform.value, tform.params ) 
+                       var sel = $n(DOM.oils_rpt_tform_table,'selector');
+                       var tform = getSelectorVal(sel);
+                       oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value, tform ) 
                };
 
 
        DOM.oils_rpt_tform_label_input.focus();
        DOM.oils_rpt_tform_label_input.select();
 
+       /*
        oilsRptCurrentTform = new oilsRptTFormManager(DOM.oils_rpt_tform_table);
        oilsRptCurrentTform.build(dtype, true, true);
+       */
+
+       _debug($n(DOM.oils_rpt_tform_table,'selector'));
+
+       oilsRptShowFilters($n(DOM.oils_rpt_tform_table,'selector'), dtype, true, true);
 
        /*
        oilsRptHideTformFields();
        oilsRptUnHideTformFields(dtype);
        */
 
-       _debug("Building transiform window for datatype "+dtype);
+       _debug("Building transform window for datatype "+dtype);
 
        /*
        unHideMe($('oils_rpt_tform_'+dtype+'_div'));
index d3ca310..2a64038 100644 (file)
                                        <td id='oils_rpt_table_left_td' align='left'>
                                                <table id='oils_rpt_name_table'><tbody>
                                                        <tr>
-                                                               <td width='20%'>Report Name: </td>
+                                                               <td width='20%'>Template Name: </td>
                                                                <td><input size='32' onchange="oilsRpt.name=this.value"/></td>
                                                        </tr><tr>
-                                                               <td>Report Type: </td>
+                                                               <td>Template Description: </td>
+                                                               <td><textarea cols='50' rows='2' id='oils_rpt_builder_desc_text'/></td>
+                                                       </tr><tr>
+                                                               <td>Template Type: </td>
                                                                <td><select id='oils_rpt_builder_type_selector'/></td>
                                                        </tr>
                                                </tbody></table>
                                        </td>
                                        <td id='oils_rpt_table_right_td' align='right'>
                                                <div class='oils_rpt_info_div'>
-                                                       <div class='oils_rpt_info_item oils_rpt_info_title'>Report Display Items</div>
+                                                       <div class='oils_rpt_info_item oils_rpt_info_title'>Template Display Items</div>
                                                        <select id='oils_rpt_display_selector' class='oils_rpt_info_item oils_rpt_info_selector' multiple='multiple'/>
                                                        <button onclick='oilsDelSelectedDisplayItems();'><u>X</u> Remove Selected</button>
                                                </div>
                                                <div class='oils_rpt_info_div'>
-                                                       <div class='oils_rpt_info_item oils_rpt_info_title'>Report Filters</div>
+                                                       <div class='oils_rpt_info_item oils_rpt_info_title'>Template Filters</div>
                                                        <select id='oils_rpt_filter_selector' class='oils_rpt_info_item oils_rpt_info_selector' multiple='multiple'/>
                                                        <button onclick='oilsDelSelectedFilterItems();'><u>X</u> Remove Selected</button>
                                                </div>
@@ -63,7 +66,7 @@
                                </tr>
                        </tbody>
                </table>
-               <span class='hide_me' id='oils_rpt_tree_label'>Report Types</span>
+               <span class='hide_me' id='oils_rpt_tree_label'>Template Types</span>
 
 
                <div id='oils_rpt_column_editor' class='floaty hide_me'>
                                <div class='oils_rpt_field_editor_window'>
                                        <div style='margin-bottom: 10px;'>Select what filter should be applied to this field:</div>
                                        <div>
-                                               <!--#set var="OILS_RPT_TFORM_TABLE_ID" value="oils_rpt_filter_tform_table"-->
-                                               <!--#include virtual="oils_rpt_tforms.xhtml"-->
-                                       </div>
-                                       <div>
-                                               <!--#set var="OILS_RPT_OP_TABLE_ID" value="oils_rpt_filter_op_table"-->
-                                               <!--#include virtual="oils_rpt_ops.xhtml"-->
+                                               <table><tbody><tr>
+                                                       <td>Choose a Transform: </td>
+                                                       <td>
+                                                               <!--#set var="OILS_RPT_TFORM_TABLE_ID" value="oils_rpt_filter_tform_table"-->
+                                                               <!--#include virtual="oils_rpt_tforms.xhtml"-->
+                                                       </td>
+                                               </tr>
+                                               <tr>    
+                                                       <td>Choose a Filter: </td>
+                                                       <td>
+                                                               <!--#set var="OILS_RPT_OP_TABLE_ID" value="oils_rpt_filter_op_table"-->
+                                                               <!--#include virtual="oils_rpt_ops.xhtml"-->
+                                                       </td>
+                                               </tr></tbody></table>
                                        </div>
 
                                </div>
index 747aa59..130e6f6 100644 (file)
@@ -8,16 +8,17 @@ oilsRptBuilderWidget.prototype.init = function(node) {
        _debug(this.node.id);
 
        this.selector = $n(this.node, 'selector');
-       this.widgetNode = $n(this.node, 'widget_td');
+//     this.widgetNode = $n(this.node, 'widget_td');
        var obj = this;
        this.selector.onchange = function() { 
                obj.showWidgets(
                        obj.selector.options[obj.selector.selectedIndex]);
        }
-       this.hideWidgets();
+       //this.hideWidgets();
 }
 
 
+/*
 oilsRptBuilderWidget.prototype.hideWidgets = function(node) {
        if(!node) node = this.widgetNode;
        if( node.nodeType != 1 ) return;
@@ -37,6 +38,7 @@ oilsRptBuilderWidget.prototype.showWidgets = function(opt) {
        var widget = opt.getAttribute('widget');
        if( widget ) unHideMe($n(this.node, widget));
 }
+*/
 
 oilsRptBuilderWidget.prototype.getCurrentOpt = function() {
        return this.selector.options[this.selector.selectedIndex];
@@ -78,11 +80,12 @@ oilsRptTFormManager.prototype.getCurrentTForm = function() {
                datatype  : opt.getAttribute('datatype'),
                aggregate : opt.getAttribute('aggregate'),
        };
-       data.params = this.getWidgetParams(data);
+       //data.params = this.getWidgetParams(data);
        return data;
 }
 
 
+/*
 oilsRptTFormManager.prototype.getWidgetParams = function(obj) {
        switch(obj.datatype) {
                case 'string' :
@@ -96,6 +99,7 @@ oilsRptTFormManager.prototype.getWidgetParams = function(obj) {
        }
        return null;
 }
+*/
 
 
 
@@ -107,3 +111,4 @@ oilsRptOpManager.prototype.constructor = oilsRptOpManager;
 oilsRptOpManager.baseClass = oilsRptBuilderWidget.prototype.constructor;
 function oilsRptOpManager(node) { this.init(node); }
 
+
index 2af87a0..02e5a48 100644 (file)
@@ -4,7 +4,7 @@
 
                        <td>
                                <select name='selector' style='width: 14em;'>
-                                       <option value='' selected='selected'>Equals</option>
+                                       <option value='=' selected='selected'>Equals</option>
                                        <option value='like'>Contains Matching substring</option>
                                        <option value='ilike'>Contains Matching substring (ignore case)</option>
                                        <option value='&gt;'>Greater than</option>
@@ -19,7 +19,7 @@
 
                        </td>
 
-                       <td name='widget_td'>
+                       <td class='hide_me' name='widget_td'> <!-- DEPRECATED -->
                                <!-- Define all of the helpful user data widgets here -->
 
                                <input widget='1' id='oils_rpt_filter_tform_input' size='12' type='text'/>
index 615ddf5..0ebea32 100644 (file)
                        </td>
 
                        <td name='widget_td'>
-
-                               <div widget='1' name='string_substring_widget'>
-                                       <span style='padding-left: 5px;'>Offset: </span>
-                                       <input name='string_substring_offset' size='3' value='1'/>
-                                       <span style='padding-left: 5px;'>Length: </span>
-                                       <input name='string_substring_length' size='3' value='1'/>
-                               </div>
-
                        </td>
 
                </tr>
index 8809743..5c128a7 100644 (file)
@@ -10,7 +10,7 @@ function oilsNextNumericId() {
 }
 
 function oilsRptNextParam() {
-       return '::PARAM'+ (oilsRptID2++);
+       return '::P'+ (oilsRptID2++);
 }
 
 function oilsRptFetchOrgTree(callback) {