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 idlclass = link_fields[i].getAttribute('class');
40 var map = link_fields[i].getAttribute('map');
41 var link = link_fields[i].getAttribute('field');
42 var key = link_fields[i].getAttribute('key');
43 var reltype = link_fields[i].getAttribute('reltype');
48 findAncestorStack( item, 'treeitem', pathList );
52 for (var j in pathList.reverse()) {
53 var n = pathList[j].getAttribute('idlclass');
54 var f = pathList[j].getAttribute('field');
55 var j = pathList[j].getAttribute('join');
57 if (f) fullpath += "-" + f;
58 if (f && j != 'undefined') fullpath += '>' + j;
60 if (fullpath) fullpath += ".";
65 fullpath += "-" + link;
73 field : field.getAttribute('name'),
80 if ($('nullable-source-control').checked) {
81 if (reltype == 'has_a') {
84 nullable : 'Parent', //rpt_strings.LINK_NULLABLE_RIGHT,
89 field : field.getAttribute('name'),
92 fullpath : fullpath + '>right'
98 nullable : 'None', //rpt_strings.LINK_NULLABLE_NONE
103 field : field.getAttribute('name'),
106 fullpath : fullpath + '>inner'
113 nullable : 'Child', //rpt_strings.LINK_NULLABLE_LEFT,
118 field : field.getAttribute('name'),
121 fullpath : fullpath + '>left'
127 nullable : 'None', //rpt_strings.LINK_NULLABLE_NONE
132 field : field.getAttribute('name'),
135 fullpath : fullpath + '>inner'
143 populateSourcesSubtree( item.lastChild, subtreeList );
146 var classtree = $('class-treetop');
148 while (classtree.childNodes.length)
149 classtree.removeChild(classtree.lastChild);
151 var c = getIDLClass( item.getAttribute('idlclass') );
163 function transformSelectHandler (noswap) {
164 var transform_tree = $('trans-view');
165 var transform = getSelectedItems(transform_tree)[0];
168 if (transform.getAttribute('aggregate') == 'true') {
169 $( 'filter_tab' ).setAttribute('disabled','true');
170 $( 'aggfilter_tab' ).setAttribute('disabled','false');
172 if (!noswap && $( 'filter_tab' ).selected)
173 $( 'filter_tab' ).parentNode.selectedItem = $( 'aggfilter_tab' );
175 $( 'filter_tab' ).setAttribute('disabled','false');
176 $( 'aggfilter_tab' ).setAttribute('disabled','true');
178 if (!noswap && $( 'aggfilter_tab' ).selected)
179 $( 'aggfilter_tab' ).parentNode.selectedItem = $( 'filter_tab' );
183 if ($( 'filter_tab' ).selected) {
184 if ($( 'filter_tab' ).getAttribute('disabled') == 'true')
185 $( 'source-add' ).setAttribute('disabled','true');
187 $( 'source-add' ).setAttribute('disabled','false');
189 } else if ($( 'aggfilter_tab' ).selected) {
190 if ($( 'aggfilter_tab' ).getAttribute('disabled') == 'true')
191 $( 'source-add' ).setAttribute('disabled','true');
193 $( 'source-add' ).setAttribute('disabled','false');
195 } else if ($( 'dis_tab' ).selected) {
196 $( 'source-add' ).setAttribute('disabled','false');
200 function detailTreeHandler (args) {
201 var class_tree = $('class-view');
202 var transform_tree = $('trans-treetop');
204 while (transform_tree.childNodes.length)
205 transform_tree.removeChild(transform_tree.lastChild);
207 var class_items = getSelectedItems(class_tree);;
209 var transforms = new Object();
210 for (var i in class_items) {
211 var item = class_items[i];
212 var dtype = item.lastChild.lastChild.getAttribute('label');
214 var item_transforms = getTransforms({ datatype : dtype });
216 for (var j in item_transforms) {
217 transforms[item_transforms[j]] = OILS_RPT_TRANSFORMS[item_transforms[j]];
218 transforms[item_transforms[j]].name = item_transforms[j];
222 var transformList = [];
223 for (var i in transforms) {
224 transformList.push( transforms[i] );
227 transformList.sort( sortHashLabels );
229 $( 'aggfilter_tab' ).setAttribute('disabled','true');
231 for (var i in transformList) {
232 var t = transformList[i];
233 transform_tree.appendChild(
235 { aggregate : t.aggregate,
242 createTreeCell( { label : t.label } ),
243 createTreeCell( { label : t.params ? t.params : '0' } ),
244 createTreeCell( { label : t.datatype.length > 0 ? t.datatype.join(', ') : 'all' } ),
245 createTreeCell( { label : t.aggregate ? rpt_strings.SOURCE_BROWSE_AGGREGATE : rpt_strings.SOURCE_BROWSE_NON_AGGREGATE } )
250 if (t.aggregate) $( 'aggfilter_tab' ).setAttribute('disabled','false');
253 transformSelectHandler(true);