1 dojo.requireLocalization("openils.reports", "reports");
3 var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
5 function sourceTreeHandlerDblClick (ev) { return sourceTreeHandler(ev,true) }
7 function sourceTreeHandler (ev, dbl) {
9 var row = {}, col = {}, part = {}, item;
10 var tree = $('idl-browse-tree');
14 tree.treeBoxObject.getCellAt(ev.clientX, ev.clientY, row, col, part);
15 item = tree.contentView.getItemAtIndex(row.value);
20 if (part.value == 'twisty' || dbl) { // opening or closing
21 if (item.getAttribute('open') == 'true' && item.lastChild.childNodes.length == 0) {
22 //var subtree = item.lastChild;
23 //while (subtree.childNodes.length)
24 // subtree.removeChild(subtree.lastChild);
26 var p = getIDLClass( item.getAttribute('idlclass') );
29 var link_fields = p.getElementsByTagName('link');
31 for ( var i = 0; i < link_fields.length; i++ ) {
32 var field = getIDLField( p, link_fields[i].getAttribute('field') );
36 var name = field.getAttributeNS(rptNS,'label');
37 if (!name) name = field.getAttribute('name');
39 var suppress = field.getAttribute('suppress_controller');
40 if (suppress && suppress.indexOf('open-ils.reporter-store') > -1) continue;
42 var idlclass = link_fields[i].getAttribute('class');
43 var map = link_fields[i].getAttribute('map');
44 var link = link_fields[i].getAttribute('field');
45 var key = link_fields[i].getAttribute('key');
46 var reltype = link_fields[i].getAttribute('reltype');
51 findAncestorStack( item, 'treeitem', pathList );
55 for (var j in pathList.reverse()) {
56 var n = pathList[j].getAttribute('idlclass');
57 var f = pathList[j].getAttribute('field');
58 var j = pathList[j].getAttribute('join');
60 if (f) fullpath += "-" + f;
61 if (f && j != 'undefined') fullpath += '>' + j;
63 if (fullpath) fullpath += ".";
68 fullpath += "-" + link;
72 nullable : rpt_strings.LINK_NULLABLE_DEFAULT,
76 field : field.getAttribute('name'),
83 if ($('nullable-source-control').checked) {
84 if (reltype == 'has_a') {
87 nullable : rpt_strings.LINK_NULLABLE_RIGHT,
92 field : field.getAttribute('name'),
95 fullpath : fullpath + '>right'
101 nullable : rpt_strings.LINK_NULLABLE_NONE,
106 field : field.getAttribute('name'),
109 fullpath : fullpath + '>inner'
116 nullable : rpt_strings.LINK_NULLABLE_LEFT,
121 field : field.getAttribute('name'),
124 fullpath : fullpath + '>left'
130 nullable : rpt_strings.LINK_NULLABLE_NONE,
135 field : field.getAttribute('name'),
138 fullpath : fullpath + '>inner'
146 populateSourcesSubtree( item.lastChild, subtreeList );
149 var classtree = $('class-treetop');
151 while (classtree.childNodes.length)
152 classtree.removeChild(classtree.lastChild);
154 var c = getIDLClass( item.getAttribute('idlclass') );
166 function transformSelectHandler (noswap) {
167 var transform_tree = $('trans-view');
168 var transform = getSelectedItems(transform_tree)[0];
171 if (transform.getAttribute('aggregate') == 'true') {
172 $( 'filter_tab' ).setAttribute('disabled','true');
173 $( 'aggfilter_tab' ).setAttribute('disabled','false');
175 if (!noswap && $( 'filter_tab' ).selected)
176 $( 'filter_tab' ).parentNode.selectedItem = $( 'aggfilter_tab' );
178 $( 'filter_tab' ).setAttribute('disabled','false');
179 $( 'aggfilter_tab' ).setAttribute('disabled','true');
181 if (!noswap && $( 'aggfilter_tab' ).selected)
182 $( 'aggfilter_tab' ).parentNode.selectedItem = $( 'filter_tab' );
186 if ($( 'filter_tab' ).selected) {
187 if ($( 'filter_tab' ).getAttribute('disabled') == 'true')
188 $( 'source-add' ).setAttribute('disabled','true');
190 $( 'source-add' ).setAttribute('disabled','false');
192 } else if ($( 'aggfilter_tab' ).selected) {
193 if ($( 'aggfilter_tab' ).getAttribute('disabled') == 'true')
194 $( 'source-add' ).setAttribute('disabled','true');
196 $( 'source-add' ).setAttribute('disabled','false');
198 } else if ($( 'dis_tab' ).selected) {
199 $( 'source-add' ).setAttribute('disabled','false');
203 function detailTreeHandler (args) {
204 var class_tree = $('class-view');
205 var transform_tree = $('trans-treetop');
207 while (transform_tree.childNodes.length)
208 transform_tree.removeChild(transform_tree.lastChild);
210 var class_items = getSelectedItems(class_tree);;
212 var transforms = new Object();
213 for (var i in class_items) {
214 var item = class_items[i];
215 var dtype = item.lastChild.lastChild.getAttribute('label');
217 var item_transforms = getTransforms({ datatype : dtype });
219 for (var j in item_transforms) {
220 transforms[item_transforms[j]] = OILS_RPT_TRANSFORMS[item_transforms[j]];
221 transforms[item_transforms[j]].name = item_transforms[j];
225 var transformList = [];
226 for (var i in transforms) {
227 transformList.push( transforms[i] );
230 transformList.sort( sortHashLabels );
232 $( 'aggfilter_tab' ).setAttribute('disabled','true');
234 for (var i in transformList) {
235 var t = transformList[i];
236 transform_tree.appendChild(
238 { aggregate : t.aggregate,
245 createTreeCell( { label : t.label } ),
246 createTreeCell( { label : t.params ? t.params : '0' } ),
247 createTreeCell( { label : t.datatype.length > 0 ? t.datatype.join(', ') : 'all' } ),
248 createTreeCell( { label : t.aggregate ? rpt_strings.SOURCE_BROWSE_AGGREGATE : rpt_strings.SOURCE_BROWSE_NON_AGGREGATE } )
253 if (t.aggregate) $( 'aggfilter_tab' ).setAttribute('disabled','false');
256 transformSelectHandler(true);