From 1931a800316f71f4bc382c0d2986faba1276dbc6 Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 4 Oct 2006 16:15:35 +0000 Subject: [PATCH] added is/is not NULL runtime relative date are partially implemented moved transforms out to a JS file for centralized location and configuration git-svn-id: svn://svn.open-ils.org/ILS/trunk@6379 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/reports/oils_rpt_builder.js | 49 +++-- Open-ILS/web/reports/oils_rpt_builder.xhtml | 6 +- Open-ILS/web/reports/oils_rpt_common.xhtml | 1 + Open-ILS/web/reports/oils_rpt_folder_window.js | 6 +- Open-ILS/web/reports/oils_rpt_ops.xhtml | 48 +---- Open-ILS/web/reports/oils_rpt_param_editor.js | 43 ++++- Open-ILS/web/reports/oils_rpt_param_editor.xhtml | 101 +++++++--- Open-ILS/web/reports/oils_rpt_report_editor.js | 5 +- Open-ILS/web/reports/oils_rpt_tforms.js | 223 +++++++++++++++++++++++ Open-ILS/web/reports/oils_rpt_tforms.xhtml | 1 + Open-ILS/web/reports/oils_rpt_vars.js | 5 + Open-ILS/web/reports/oils_rpt_widget.js | 33 +++- 12 files changed, 421 insertions(+), 100 deletions(-) create mode 100644 Open-ILS/web/reports/oils_rpt_tforms.js diff --git a/Open-ILS/web/reports/oils_rpt_builder.js b/Open-ILS/web/reports/oils_rpt_builder.js index 2f837b77ed..f885943dd4 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.js +++ b/Open-ILS/web/reports/oils_rpt_builder.js @@ -107,6 +107,9 @@ function oilsAddRptDisplayItem(path, name, tform, params) { } function oilsRptGetIsAgg(tform) { + return OILS_RPT_TRANSFORMS[tform].aggregate; + + /* DEPRECATED */ var sel = $n(DOM.oils_rpt_tform_table,'selector'); for( var i = 0; i < sel.options.length; i++ ) { var opt = sel.options[i]; @@ -298,7 +301,9 @@ function oilsAddRptFilterItem(path, tform, filter) { column: { transform: tform, colname: oilsRptPathCol(path) }, condition : {} }; - where.condition[filter] = oilsRptNextParam(); + if( filter == 'is' || filter == 'is not' ) + where.condition[filter] = null; + else where.condition[filter] = oilsRptNextParam(); switch(tform) { case 'substring' : where.column.params = oilsRptNextParam(); @@ -576,7 +581,20 @@ function oilsRptDrawFilterWindow(path, col, cls, field) { } } + var tformPicker = new oilsRptTformPicker( { + node : DOM.oils_rpt_filter_tform_table, + datatype : field.datatype, + non_aggregate : true + } + ); + + DOM.oils_rpt_filter_submit.onclick = function() { + oilsAddRptFilterItem( + path, tformPicker.getSelected(), getSelectorVal(fsel)); + } + + /* DOM.oils_rpt_filter_submit.onclick = function() { var tsel = $n(DOM.oils_rpt_filter_tform_table,'selector'); var tform = getSelectorVal(tsel); @@ -584,6 +602,7 @@ function oilsRptDrawFilterWindow(path, col, cls, field) { 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); @@ -617,11 +636,18 @@ function oilsRptDrawTransformWindow(path, col, cls, field) { DOM.oils_rpt_tform_label_input.value = oilsRptMakeLabel(path); var dtype = field.datatype; + var tformPicker = new oilsRptTformPicker( { + node : DOM.oils_rpt_tform_table, + datatype : field.datatype, + non_aggregate : true, + aggregate : true + } + ); + DOM.oils_rpt_tform_submit.onclick = function(){ - var sel = $n(DOM.oils_rpt_tform_table,'selector'); - var tform = getSelectorVal(sel); - oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value, tform ) + oilsAddRptDisplayItem(path, + DOM.oils_rpt_tform_label_input.value, tformPicker.getSelected() ); }; @@ -633,9 +659,11 @@ function oilsRptDrawTransformWindow(path, col, cls, field) { 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(); @@ -745,6 +773,7 @@ function oilsRptSetFilters(dtype) { */ /* hides all of the filter widgets */ +/* function oilsRptHideFilterWidgets(node) { if(!node) node = DOM.oils_rpt_filter_tform_widget_td; @@ -757,15 +786,12 @@ function oilsRptHideFilterWidgets(node) { oilsRptHideFilterWidgets(cs[i]); } } - -/* what does this need to do? */ -function oilsRptSetFilterOpActions() { -} - +*/ /* hides/unhides the appropriate widgets and returns the parameter array appropriate for the selected widget */ +/* function oilsRptDoFilterWidgets() { filter = getSelectorVal(DOM.oils_rpt_filter_tform_selector); oilsRptHideFilterWidgets(); @@ -775,7 +801,6 @@ function oilsRptDoFilterWidgets() { switch(filter) { - /* generic transforms */ case 'equals': if(!op) op = 'equals'; case 'like': @@ -802,7 +827,6 @@ function oilsRptDoFilterWidgets() { params = [DOM.oils_rpt_filter_tform_input.value]; break; - /* timestamp transforms */ case 'date_between': if(!op) op = 'between'; case 'date_not_between': @@ -868,7 +892,6 @@ function oilsRptDoFilterWidgets() { if(!tform) tform = 'age'; break; - /* string transforms */ case 'substring': if(!tform) tform = 'substring'; break; @@ -881,7 +904,6 @@ function oilsRptDoFilterWidgets() { if(!op) op = ''; if(!tform) tform = 'dow'; - /* numeric transforms */ case 'round': if(!op) op = ''; if(!tform) tform = 'dow'; @@ -893,6 +915,7 @@ function oilsRptDoFilterWidgets() { return { op : op, params : params, tform : tform }; } + */ diff --git a/Open-ILS/web/reports/oils_rpt_builder.xhtml b/Open-ILS/web/reports/oils_rpt_builder.xhtml index c7ffcf871f..f9e3789372 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.xhtml +++ b/Open-ILS/web/reports/oils_rpt_builder.xhtml @@ -92,8 +92,7 @@
Select how this field should be displayed:
- - +


@@ -106,8 +105,7 @@ diff --git a/Open-ILS/web/reports/oils_rpt_common.xhtml b/Open-ILS/web/reports/oils_rpt_common.xhtml index 540f8e0796..fc23730d3d 100644 --- a/Open-ILS/web/reports/oils_rpt_common.xhtml +++ b/Open-ILS/web/reports/oils_rpt_common.xhtml @@ -42,6 +42,7 @@ + diff --git a/Open-ILS/web/reports/oils_rpt_folder_window.js b/Open-ILS/web/reports/oils_rpt_folder_window.js index 2a56a6d224..b552697b1c 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_window.js +++ b/Open-ILS/web/reports/oils_rpt_folder_window.js @@ -208,7 +208,7 @@ oilsRptFolderWindow.prototype.doFolderAction = function() { break; case 'delete_output': for( var i = 0; i < objs.length; i++ ) { - if( objs[i].runner() != USER.id() ) + if( objs[i].runner().id() != USER.id() ) return alertId('oils_rpt_folder_contents_no_delete'); } this.deleteOutputs(objs,0, @@ -242,7 +242,7 @@ oilsRptFolderWindow.prototype.showOutput = function(sched) { oilsRptFolderWindow.prototype.deleteReport = function(report) { - if( report.owner() != USER.id() ) + if( report.owner().id() != USER.id() ) return alertId('oils_rpt_folder_contents_no_delete'); if(!confirmId('oils_rpt_folder_contents_confirm_report_delete')) return; var req = new Request(OILS_RPT_DELETE_REPORT, SESSION, report.id()); @@ -259,7 +259,7 @@ oilsRptFolderWindow.prototype.deleteReport = function(report) { } oilsRptFolderWindow.prototype.deleteTemplate = function(tmpl) { - if( tmpl.owner() != USER.id() ) + if( tmpl.owner().id() != USER.id() ) return alertId('oils_rpt_folder_contents_no_delete'); var req0 = new Request( OILS_RPT_TEMPLATE_HAS_RPTS, SESSION, tmpl.id() ); req0.callback( diff --git a/Open-ILS/web/reports/oils_rpt_ops.xhtml b/Open-ILS/web/reports/oils_rpt_ops.xhtml index 454fb80c5b..629a20a32a 100644 --- a/Open-ILS/web/reports/oils_rpt_ops.xhtml +++ b/Open-ILS/web/reports/oils_rpt_ops.xhtml @@ -19,56 +19,12 @@ + + -
Choose a Transform: - - +
- - - - - - - (YYYY-MM-DD) - - - - - - - - - - - - - - - - - - - - - -
diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.js b/Open-ILS/web/reports/oils_rpt_param_editor.js index 3c8fd13d68..31124ae74d 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.js +++ b/Open-ILS/web/reports/oils_rpt_param_editor.js @@ -37,22 +37,52 @@ oilsRptParamEditor.prototype.draw = function() { $n(row, 'action').appendChild(text(par.op)); par.widget = this.buildWidget(par, $n(row, 'widget')); par.widget.draw(); + this.buildRelWidget(par, row); this.tbody.appendChild(row); } } +/* display the time-relative options if necessary */ +oilsRptParamEditor.prototype.buildRelWidget = function(par, row) { + var field = oilsRptFindField( + oilsIDL[oilsRptPathClass(par.path)], oilsRptPathCol(par.path)); + _debug('checking rel widget for datatype '+field.datatype); + if( field.datatype != 'timestamp' ) return; + + var dom = $n(row,'reldate_div'); + unHideMe(dom); + par.relWidget = new oilsRptRelDatePicker({node:$n(dom,'reldate'),relative:true}); + par.relWidget.draw(); + var cb = $n(row,'choose_rel'); + cb.onclick = function() { + par.relWidgetChecked = false; + if( cb.checked ) par.relWidgetChecked = true; + } +} + + oilsRptParamEditor.prototype.buildWidget = function(param, node) { - //var cls = param.relation.split(/-/).pop(); var path = param.path.split(/-/); path.pop(); var cls = path.pop(); + + var field = oilsRptFindField( + oilsIDL[oilsRptPathClass(par.path)], oilsRptPathCol(par.path)); + var dtype = field.datatype; + var transform = param.column.transform; + _debug("building widget with param class:" + cls + ' col: '+param.column.colname + ' op: '+ param.op); + + switch(transform) { + + } + + switch(param.op) { case 'in': case 'not in': - /* we have to special case org selection for now, - until we have generic object fetch support */ + /* special case the org tree selector */ if( cls == 'aou' ) { return new oilsRptOrgMultiSelect({node:node}); } else { @@ -62,7 +92,12 @@ oilsRptParamEditor.prototype.buildWidget = function(param, node) { return new oilsRptMultiInputWidget({node:node}); default: - return new oilsRptWidget({node:node}); + switch(dtype) { + case 'timestamp': + return new oilsRptRelDatePicker({node:node}); + default: + return new oilsRptWidget({node:node}); + } } } diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.xhtml b/Open-ILS/web/reports/oils_rpt_param_editor.xhtml index c56ef619c2..45249a47e4 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.xhtml +++ b/Open-ILS/web/reports/oils_rpt_param_editor.xhtml @@ -13,30 +13,30 @@ Recurance Interval