.floaty {
position: absolute;
text-align: center;
- z-index: 10;
+ z-index: 1;
background: #E0F0F0;
border: 3px groove #0033EE;
padding: 10px;
border-bottom: 1px solid #A0A0A0;
padding: 4px;
}
+
+.oils_rpt_cal_image {
+ cursor: pointer;
+ border: 1px solid red;
+ padding: 0px; margin: -3px;
+}
oilsReportBuilderReset();
DOM.oils_rpt_table.onclick =
function(){hideMe(DOM.oils_rpt_column_editor)};
+ //oilsRptBuildCalendars();
oilsDrawRptTree(
function() {
hideMe(DOM.oils_rpt_tree_loading);
oilsRptResetParams();
}
+/*
+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
+ });
+}
+*/
+
+
/* returns just the column name */
function oilsRptPathCol(path) {
function oilsRptDrawDataWindow(path) {
var col = oilsRptPathCol(path);
var cls = oilsRptPathClass(path);
- var field = grep(oilsIDL[cls].fields, function(f){return (f.name==col);})[0];
+ var field = oilsRptFindField(oilsIDL[cls], col);
appendClear(DOM.oils_rpt_editor_window_label, text(oilsRptMakeLabel(path)));
+ appendClear(DOM.oils_rpt_editor_window_datatype, text(field.datatype));
_debug("setting update data window for column "+col+' on class '+cls);
div.style.visibility='hidden';
oilsRptDrawTransformWindow(path, col, cls, field);
+ oilsRptDrawFilterWindow(path, col, cls, field);
+
+ //oilsRptSetFilters(field.datatype);
+
+ //oilsRptDoFilterWidgets();
+
+ //DOM.oils_rpt_filter_tform_selector.onchange = oilsRptDoFilterWidgets;
- DOM.oils_rpt_column_editor_close_button.onclick = function(){hideMe(div);};
buildFloatingDiv(div, 600);
/* now let them see it */
div.style.visibility='visible';
+ oilsRptSetDataWindowActions(div);
+}
+
+
+function oilsRptSetDataWindowActions(div) {
/* give the tab links behavior */
DOM.oils_rpt_tform_tab.onclick =
function(){oilsRptHideEditorDivs();unHideMe(DOM.oils_rpt_tform_div)};
function(){oilsRptHideEditorDivs();unHideMe(DOM.oils_rpt_agg_filter_div)};
DOM.oils_rpt_tform_tab.onclick();
+ DOM.oils_rpt_column_editor_close_button.onclick = function(){hideMe(div);};
+}
+
+
+function oilsRptDrawFilterWindow(path, col, cls, field) {
+ oilsRptCurrentFilterTform = new oilsRptTFormManager(DOM.oils_rpt_filter_tform_table);
+ oilsRptCurrentFilterTform.build(field.datatype, false, true);
+ oilsRptCurrentFilterOpManager = new oilsRptOpManager(DOM.oils_rpt_filter_op_table);
}
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;
- oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value, tform, params )
+ */
+
+ var tform = oilsRptCurrentTform.getCurrentTForm();
+ oilsAddRptDisplayItem(path, DOM.oils_rpt_tform_label_input.value, tform.value, tform.params )
};
+
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);
+
+ /*
oilsRptHideTformFields();
oilsRptUnHideTformFields(dtype);
+ */
- _debug("Transforming item with datatype "+dtype);
+ _debug("Building transiform window for datatype "+dtype);
+
+ /*
unHideMe($('oils_rpt_tform_'+dtype+'_div'));
$('oils_rpt_tform_all_raw').checked = true;
+ */
}
+/*
function oilsRptHideTformFields() {
var rows = DOM.oils_rpt_tform_tbody.childNodes;
for( var i = 0; i < rows.length; i++ )
}
}
+
function oilsRptGetTform(datatype) {
for( var i in oilsRptTransforms[datatype] )
if( $('oils_rpt_tform_'+datatype+'_'+oilsRptTransforms[datatype][i]).checked )
return oilsRptTransforms.all[i];
return null;
}
+*/
+
+/*
function getRptTformParams(type, tform) {
switch(type) {
- case 'timestamp':
- switch(tform) {
- case 'months_ago':
- return [DOM.oils_rpt_tform_timestamp_months_ago_input.value];
- case 'quarters_ago':
- return [DOM.oils_rpt_tform_timestamp_quarters_ago_input.value];
- }
case 'string' :
switch(tform) {
case 'substring' :
}
}
}
+*/
+
+
+/* given a transform selector, this displays the appropriate
+ transforms for the given datatype.
+ if aggregate is true, is displays the aggregate transforms */
+/*
+function oilsRptSetTransforms(sel, dtype, show_agg, show_noagg) {
+ for( var i = 0; i < sel.options.length; i++ ) {
+ var opt = sel.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);
+ }
+ }
+}
+*/
+
+
+/* displays the correct filter-transforms for the given datatype */
+/*
+function oilsRptSetFilters(dtype) {
+
+ DOM.oils_rpt_filter_submit.onclick = function() {
+ var data = oilsRptDoFilterWidgets();
+ alert(js2JSON(data));
+ }
+
+ var sel = DOM.oils_rpt_filter_tform_selector;
+ for( var i = 0; i < sel.options.length; i++ ) {
+ var opt = sel.options[i];
+ _debug(opt.getAttribute('op'));
+ var t = opt.getAttribute('datatype');
+ if( t && t != dtype ) hideMe(opt);
+ else unHideMe(opt);
+ }
+}
+*/
+
+/* hides all of the filter widgets */
+function oilsRptHideFilterWidgets(node) {
+ if(!node)
+ node = DOM.oils_rpt_filter_tform_widget_td;
+ if( node.nodeType != 1 ) return;
+ if( node.getAttribute('widget') ) {
+ hideMe(node);
+ } else {
+ var cs = node.childNodes;
+ for( var i = 0; cs && i < cs.length; i++ )
+ 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();
+ var op = null;
+ var tform = null;
+ var params = null;
+
+ switch(filter) {
+
+ /* generic transforms */
+ case 'equals':
+ if(!op) op = 'equals';
+ case 'like':
+ if(!op) op = 'like';
+ case 'ilike':
+ if(!op) op = 'ilike';
+ case 'gt':
+ if(!op) op = '>';
+ case 'gte':
+ if(!op) op = '>=';
+ case 'lt':
+ if(!op) op = '<';
+ case 'lte':
+ if(!op) op = '<=';
+ case 'in':
+ if(!op) op = 'in';
+ case 'not_in':
+ if(!op) op = 'not in';
+ case 'between':
+ if(!op) op = 'between';
+ case 'not_between':
+ if(!op) op = 'not between';
+ unHideMe(DOM.oils_rpt_filter_tform_input);
+ params = [DOM.oils_rpt_filter_tform_input.value];
+ break;
+
+ /* timestamp transforms */
+ case 'date_between':
+ if(!op) op = 'between';
+ case 'date_not_between':
+ if(!op) op = 'not between';
+ tform = 'date';
+ var d = new Date();
+ unHideMe(DOM.oils_rpt_filter_tform_date_1);
+ unHideMe(DOM.oils_rpt_filter_tform_date_2);
+ unHideMe(DOM.oils_rpt_filter_tform_date_hint);
+ DOM.oils_rpt_filter_tform_date_1.value = mkYearMonDay();
+ DOM.oils_rpt_filter_tform_date_2.value = mkYearMonDay();
+ params = [
+ DOM.oils_rpt_filter_tform_date_1.value,
+ DOM.oils_rpt_filter_tform_date_2.value
+ ];
+ break;
+
+ case 'dow_between':
+ op = 'between';
+ if(!tform) tform = 'dow';
+ case 'dow_not_between':
+ if(!op) op = 'not between';
+ if(!tform) tform = 'dow';
+ break;
+
+ case 'dom_between':
+ op = 'between';
+ if(!tform) tform = 'dom';
+ case 'dom_not_between':
+ if(!op) op = 'not between';
+ if(!tform) tform = 'dom';
+ break;
+
+ case 'month_between':
+ op = 'between';
+ if(!tform) tform = 'moy';
+ case 'month_not_between':
+ if(!op) op = 'not between';
+ if(!tform) tform = 'moy';
+ break;
+
+ case 'quarter_between':
+ op = 'between';
+ if(!tform) tform = 'qoy';
+ case 'quarter_not_between':
+ if(!op) op = 'not between';
+ if(!tform) tform = 'qoy';
+ break;
+
+ case 'year_between':
+ if(!op) op = 'between';
+ if(!tform) tform = 'year_trunc';
+ case 'year_not_between':
+ if(!op) op = 'not between';
+ if(!tform) tform = 'year_trunc';
+ break;
+
+ case 'age_between':
+ if(!op) op = 'between';
+ if(!tform) tform = 'age';
+ case 'age_not_between':
+ if(!op) op = 'not between';
+ if(!tform) tform = 'age';
+ break;
+
+ /* string transforms */
+ case 'substring':
+ if(!tform) tform = 'substring';
+ break;
+
+ case 'lower':
+ if(!op) op = '';
+ if(!tform) tform = 'dow';
+
+ case 'upper':
+ if(!op) op = '';
+ if(!tform) tform = 'dow';
+
+ /* numeric transforms */
+ case 'round':
+ if(!op) op = '';
+ if(!tform) tform = 'dow';
+
+ case 'int':
+ if(!op) op = '';
+ if(!tform) tform = 'dow';
+ }
+
+ return { op : op, params : params, tform : tform };
+}
+
+
<script language='javascript' src='/opac/common/js/org_utils.js'> </script>
<script language='javascript' src='/opac/common/js/init.js'> </script>
<script language='javascript' src='/opac/common/js/RemoteRequest.js'> </script>
- <script language='javascript' src='slimtree.js'> </script>
+ <script language='javascript' src='/opac/common/js/slimtree.js'> </script>
+ <script>
+ stpicopen = '../opac/images/slimtree/folder2.gif';
+ stpicclose = '../opac/images/slimtree/folderopen2.gif';
+ stpicblank = '../opac/images/slimtree/page.gif';
+ stpicline = '../opac/images/slimtree/line.gif';
+ stpicjoin = '../opac/images/slimtree/join.gif';
+ stpicjoinb = '../opac/images/slimtree/joinbottom.gif';
+ </script>
+
<link rel="stylesheet" type="text/css" media="all"
href="/opac/common/js/jscalendar/calendar-brown.css" title="win2k-cold-1" />
<script type="text/javascript" src="adminlib.js"></script>
<script type="text/javascript" src="oils_rpt_vars.js"></script>
<script type="text/javascript" src="oils_rpt_utils.js"></script>
- <script type="text/javascript" src="oils_rpt_builder.js"></script>
<script type="text/javascript" src="oils_rpt_tree.js"></script>
+ <script type="text/javascript" src="oils_rpt_builder.js"></script>
+ <script type="text/javascript" src="oils_rpt_builder_widgets.js"></script>
<script type="text/javascript" src="oils_rpt.js"></script>
<link rel="stylesheet" type="text/css" href="oils_rpt.css"> </link>
<a class='oils_rpt_main_link' href='javascript:_l("oils_rpt.xhtml");'>Reports Home</a>
</div>
-
<div id='oils_rpt_tree_loading'>
Loading...
</div>
</tbody></table>
<div style='margin-bottom: 10px;'>
- <b style='padding-right: 15px;' id='oils_rpt_editor_window_label'/>
+ <b style='padding-right: 8px;' id='oils_rpt_editor_window_label'/>
+ (<span id='oils_rpt_editor_window_datatype'/>)
</div>
<div id='oils_rpt_tform_div'>
<input size='28' id='oils_rpt_tform_label_input'/>
<div class='oils_rpt_field_editor_window'>
<div style='margin-bottom: 10px;'>Select how this field should be displayed:</div>
- <!--#include virtual="oils_rpt_tform_table.xhtml"-->
+ <!--#set var="OILS_RPT_TFORM_TABLE_ID" value="oils_rpt_tform_table"-->
+ <!--#include virtual="oils_rpt_tforms.xhtml"-->
</div>
<br/><br/>
<button id='oils_rpt_tform_submit'>Add Item</button>
<div id='oils_rpt_filter_div' class='hide_me'>
<div class='oils_rpt_field_editor_window'>
<div style='margin-bottom: 10px;'>Select what filter should be applied to this field:</div>
- <!--#include virtual="oils_rpt_filter_table.xhtml"-->
+ <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"-->
+ </div>
+
</div>
<button id='oils_rpt_filter_submit'>Create Filter</button>
</div>
--- /dev/null
+function oilsRptBuilderWidget(node) {
+ this.init(node);
+}
+
+oilsRptBuilderWidget.prototype.init = function(node) {
+ if(!node) return;
+ this.node = node;
+ _debug(this.node.id);
+
+ this.selector = $n(this.node, 'selector');
+ this.widgetNode = $n(this.node, 'widget_td');
+ var obj = this;
+ this.selector.onchange = function() {
+ obj.showWidgets(
+ obj.selector.options[obj.selector.selectedIndex]);
+ }
+ this.hideWidgets();
+}
+
+
+oilsRptBuilderWidget.prototype.hideWidgets = function(node) {
+ if(!node) node = this.widgetNode;
+ if( node.nodeType != 1 ) return;
+ if( node.getAttribute('widget') ) {
+ hideMe(node);
+ } else {
+ var cs = node.childNodes;
+ for( var i = 0; cs && i < cs.length; i++ )
+ this.hideWidgets(cs[i]);
+ }
+}
+
+
+oilsRptBuilderWidget.prototype.showWidgets = function(opt) {
+ _debug("showing widget with opt value: "+opt.value);
+ this.hideWidgets();
+ var widget = opt.getAttribute('widget');
+ if( widget ) unHideMe($n(this.node, widget));
+}
+
+oilsRptBuilderWidget.prototype.getCurrentOpt = function() {
+ return this.selector.options[this.selector.selectedIndex];
+}
+
+
+
+
+/* ------------------------------------------------------------------------- */
+oilsRptTFormManager.prototype = new oilsRptBuilderWidget();
+oilsRptTFormManager.prototype.constructor = oilsRptTFormManager;
+oilsRptTFormManager.baseClass = oilsRptBuilderWidget.prototype.constructor;
+function oilsRptTFormManager(node) { this.init(node); }
+
+/* displays the appropriate transforms for the given types and flags */
+oilsRptTFormManager.prototype.build = function( dtype, show_agg, show_noagg ) {
+ for( var i = 0; i < this.selector.options.length; i++ ) {
+ var opt = this.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);
+ }
+ }
+}
+
+oilsRptTFormManager.prototype.getCurrentTForm = function() {
+ var opt = this.getCurrentOpt();
+ var data = {
+ value : opt.value,
+ datatype : opt.getAttribute('datatype'),
+ aggregate : opt.getAttribute('aggregate'),
+ };
+ data.params = this.getWidgetParams(data);
+ return data;
+}
+
+
+oilsRptTFormManager.prototype.getWidgetParams = function(obj) {
+ switch(obj.datatype) {
+ case 'string' :
+ switch(obj.value) {
+ case 'substring':
+ return [
+ $n(this.widgetNode, 'string_substring_offset').value,
+ $n(this.widgetNode, 'string_substring_length').value
+ ];
+ }
+ }
+ return null;
+}
+
+
+
+
+/* ------------------------------------------------------------------------- */
+
+oilsRptOpManager.prototype = new oilsRptBuilderWidget();
+oilsRptOpManager.prototype.constructor = oilsRptOpManager;
+oilsRptOpManager.baseClass = oilsRptBuilderWidget.prototype.constructor;
+function oilsRptOpManager(node) { this.init(node); }
+
--- /dev/null
+<table id='<!--#echo var="OILS_RPT_OP_TABLE_ID"-->'>
+ <tbody>
+ <tr>
+
+ <td>
+ <select name='selector' style='width: 14em;'>
+ <option value='' selected='selected'>Equals</option>
+ <option value='like'>Contains Matching substring</option>
+ <option value='ilike'>Contains Matching substring (ignore case)</option>
+ <option value='>'>Greater than</option>
+ <option value='>='>Greater than or equal to</option>
+ <option value='<'>Less than</option>
+ <option value='<='>Less than or equal to</option>
+ <option value='in'>In (comma separated list)</option>
+ <option value='not in'>Not in (comma separated list)</option>
+ <option value='between'>Between</option>
+ <option value='not between'>Not between</option>
+ </select>
+
+ </td>
+
+ <td name='widget_td'>
+ <!-- Define all of the helpful user data widgets here -->
+
+ <input widget='1' id='oils_rpt_filter_tform_input' size='12' type='text'/>
+
+ <input widget='1' id='oils_rpt_filter_tform_date_1' size='10' maxlength='10' type='text'/>
+ <input widget='1' id='oils_rpt_filter_tform_date_2' size='10' maxlength='10' type='text'/>
+ <span widget='1' id='oils_rpt_filter_tform_date_hint'>(YYYY-MM-DD)</span>
+
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_day_selector'>
+ <!--#include virtual="oils_rpt_day_opts.xhtml"-->
+ </select>
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_dom_selector'>
+ <!--#include virtual="oils_rpt_dom_opts.xhtml"-->
+ </select>
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_month_selector'>
+ <!--#include virtual="oils_rpt_month_opts.xhtml"-->
+ </select>
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_quarter_selector'>
+ <!--#include virtual="oils_rpt_quarter_opts.xhtml"-->
+ </select>
+
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_day_selector_2'>
+ <!--#include virtual="oils_rpt_day_opts.xhtml"-->
+ </select>
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_dom_selector_2'>
+ <!--#include virtual="oils_rpt_dom_opts.xhtml"-->
+ </select>
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_month_selector_2'>
+ <!--#include virtual="oils_rpt_month_opts.xhtml"-->
+ </select>
+
+ <select widget='1' id='oils_rpt_filter_tform_timestamp_quarter_selector_2'>
+ <!--#include virtual="oils_rpt_quarter_opts.xhtml"-->
+ </select>
+
+ <input widget='1' id='oils_rpt_filter_tform_input_2' size='10' type='text'/>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+
+
+
+++ /dev/null
-<tr datatype='timestamp'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_timestamp_month_trunc'/> Month Trunc <br/>
- </td>
-</tr>
-<tr datatype='timestamp'>
- <td>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_timestamp_months_ago'/>
- <span>Month(s) Ago</span>
- </td>
- <td>
- <select id='oils_rpt_tform_timestamp_months_ago_selector' style='padding: 0px;'
- onchange='
- DOM.oils_rpt_tform_timestamp_months_ago_input.value=getSelectorVal(this);
- DOM.oils_rpt_tform_timestamp_months_ago.checked=true;
- '>
- <option value='1'>1</option>
- <option value='2'>2</option>
- <option value='3'>3</option>
- <option value='4'>4</option>
- <option value='5'>5</option>
- <option value='6'>6</option>
- <option value='7'>7</option>
- <option value='8'>8</option>
- <option value='9'>9</option>
- <option value='10'>10</option>
- <option value='11'>11</option>
- <option value='12'>12</option>
- <option value='18'>18</option>
- <option value='24'>24</option>
- </select>
- <input type='text' size='3' maxlength='3' id='oils_rpt_tform_timestamp_months_ago_input'
- onchange='DOM.oils_rpt_tform_timestamp_months_ago.checked = true;' style='padding:0px' value='1'/>
- </td>
-</tr>
-<tr datatype='timestamp'>
- <td>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_timestamp_quarters_ago'/>
- <span>Quarter(s) Ago</span>
- </td>
- <td>
- <select id='oils_rpt_tform_timestamp_quarters_ago_selector' style='padding:0px'
- onchange='
- DOM.oils_rpt_tform_timestamp_quarters_ago_input.value=getSelectorVal(this);
- DOM.oils_rpt_tform_timestamp_quarters_ago.checked = true;'>
- <option value='1'>1</option>
- <option value='2'>2</option>
- <option value='3'>3</option>
- <option value='4'>4</option>
- <option value='5'>5</option>
- <option value='6'>6</option>
- <option value='7'>7</option>
- <option value='8'>8</option>
- <option value='9'>9</option>
- <option value='10'>10</option>
- <option value='11'>11</option>
- <option value='12'>12</option>
- </select>
- <input type='text' size='3' maxlength='3' id='oils_rpt_tform_timestamp_quarters_ago_input'
- onchange='DOM.oils_rpt_tform_timestamp_quarters_ago.checked = true;' style='padding:0px' value='1'/>
- </td>
-</tr>
-<tr datatype='timestamp'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_timestamp_age'/> Age <br/>
- </td>
-</tr>
-
-
+++ /dev/null
-<tr datatype='numeric'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_numeric_sum'/> Sum <br/>
- </td>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_numeric_average'/> Average <br/>
- </td>
-</tr>
+++ /dev/null
-<tr datatype='string'>
- <td>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_string_substring'/>
- <span>Substring</span>
- </td>
- <td>
- <span style='padding-left: 5px;'>Offset: </span>
- <input id='oils_rpt_tform_string_substring_offset' size='3' value='1'
- onchange='DOM.oils_rpt_tform_string_substring.checked = true;'/>
- <span style='padding-left: 5px;'>Length: </span>
- <input id='oils_rpt_tform_string_substring_length' size='3' value='1'
- onchange='DOM.oils_rpt_tform_string_substring.checked = true;'/>
- </td>
-</tr>
+++ /dev/null
-<table>
- <tbody id='oils_rpt_tform_tbody' class='oils_rpt_editor_window_tbody'>
- <tr datatype='all'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_all_raw'/>
- <span>Raw Data</span>
- </td>
- </tr>
- <tr datatype='all'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_all_count'/>
- <span>Count</span>
- </td>
- </tr>
- <tr datatype='all'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_all_count_distinct'/>
- <span>Count Distinct</span>
- </td>
- </tr>
- <tr datatype='all'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_all_min'/>
- <span>Min</span>
- </td>
- </tr>
- <tr datatype='all'>
- <td colspan='2'>
- <input type='radio' name='oils_rpt_tform_input' id='oils_rpt_tform_all_max'/>
- <span>Max</span>
- </td>
- </tr>
- <!--#include virtual="oils_rpt_tform_string.xhtml"-->
- <!--#include virtual="oils_rpt_tform_date.xhtml"-->
- <!--#include virtual="oils_rpt_tform_numeric.xhtml"-->
- </tbody>
-</table>
-
-
--- /dev/null
+<!-- Generic selecto for transforms -->
+<table id='<!--#echo var="OILS_RPT_TFORM_TABLE_ID"-->'>
+ <tbody>
+ <tr>
+ <td>
+ <select name='selector' style='width: 14em;'>
+
+ <!-- generic transforms -->
+ <option value='Bare' selected='selected'>Raw Data</option>
+ <option value='count' aggregate='1'>Count</option>
+ <option value='count distinct' aggregate='1'>Count Distinct</option>
+ <option value='min' aggregate='1'>Min</option>
+ <option value='max' aggregate='1'>Max</option>
+
+ <!-- string transforms -->
+ <option value='substring' datatype='string' widget='string_substring_widget' >Substring</option>
+ <option value='lower' datatype='string'>Lower case</option>
+ <option value='upper' datatype='string'>Upper Case</option>
+
+ <!-- timestamp transforms -->
+ <option value='dow' datatype='timestamp'>Day of Week</option>
+ <option value='dom' datatype='timestamp'>Day of Month</option>
+ <option value='doy' datatype='timestamp'>Day of Year</option>
+ <option value='woy' datatype='timestamp'>Week of Year</option>
+ <option value='moy' datatype='timestamp'>Month of Year</option>
+ <option value='qoy' datatype='timestamp'>Quarter of Year</option>
+ <option value='date' datatype='timestamp'>Date</option>
+ <option value='month_trunc' datatype='timestamp'>Year + Month</option>
+ <option value='year_trunc' datatype='timestamp'>Year</option>
+ <option value='day_name' datatype='timestamp'>Day Name</option>
+ <option value='month_name' datatype='timestamp'>Month Name</option>
+
+ <!-- numeric transforms -->
+ <option value='round' datatype='numeric' >Round</option>
+ <option value='int' datatype='numeric' >Drop trailing decimals</option>
+ </select>
+ </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>
+ </tbody>
+</table>
+
+
var oilsIDLPersistNS = 'http://open-ils.org/spec/opensrf/IDL/persistance/v1';
/* transforms for the different data types */
+/*
var oilsRptTransforms = {
'string' : [ 'substring' ],
'numeric' : [ 'sum', 'average' ],
'timestamp' : [ 'month_trunc', 'months_ago', 'quarters_ago', 'age' ],
'all' : [ 'raw', 'count', 'count_distinct', 'min', 'max' ]
};
+*/
/* for ease of use, shove everything in the 'all' slot into the other tforms */
/*
}
*/
+/* the current transform manager for the builder transform window */
+var oilsRptCurrentTform;
+/* the current transform manager for the builder filter window */
+var oilsRptCurrentFilterTform;
+/* the current operation manager for the filter window */
+var oilsRptCurrentFilterOpManager;