]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/reports/xul/source-browse.js
first cut at the xul template interface
[working/Evergreen.git] / Open-ILS / web / reports / xul / source-browse.js
1
2 function sourceTreeHandlerDblClick (ev) { return sourceTreeHandler(ev,true) }
3
4 function sourceTreeHandler (ev, dbl) {
5
6         var row = {}, col = {}, part = {}, item;
7         var tree = $('idl-browse-tree');
8
9
10         try {
11                 tree.treeBoxObject.getCellAt(ev.clientX, ev.clientY, row, col, part);
12                 item = tree.contentView.getItemAtIndex(row.value);
13         } catch (e) {
14                 // ... meh
15         }
16
17         if (part.value == 'twisty' || dbl) { // opening or closing
18                 if (item.getAttribute('open') == 'true' && item.lastChild.childNodes.length == 0) {
19                         //var subtree = item.lastChild;
20                         //while (subtree.childNodes.length)
21                         //      subtree.removeChild(subtree.lastChild);
22
23                         var p = getIDLClass( item.getAttribute('idlclass') );
24
25                         var subtreeList = [];
26                         var link_fields = p.getElementsByTagName('link');
27
28                         for ( var i = 0; i < link_fields.length; i++ ) {
29                                 var field = getIDLField( p, link_fields[i].getAttribute('field') );
30
31                                 if (!field) continue;
32
33                                 var name = field.getAttributeNS(rptNS,'label');
34                                 if (!name) name = field.getAttribute('name');
35
36                                 var idlclass = link_fields[i].getAttribute('class');
37                                 var map = link_fields[i].getAttribute('map');
38                                 var link = link_fields[i].getAttribute('field');
39                                 var key = link_fields[i].getAttribute('key');
40                                 var reltype = link_fields[i].getAttribute('reltype');
41
42                                 if (map) continue;
43
44                                 var pathList = [];
45                                 findAnscestorStack( item, 'treeitem', pathList );
46
47                                 var fullpath = '';
48                                 for (var j in pathList.reverse()) {
49                                         var n = pathList[j].getAttribute('idlclass');
50                                         var f = pathList[j].getAttribute('field');
51
52                                         if (f) fullpath += "-" + f;
53
54                                         if (fullpath) fullpath += ".";
55                                         fullpath += n;
56
57                                 }
58
59                                 fullpath += "-" + link;
60
61                                 subtreeList.push(
62                                         { name : name,
63                                           idlclass : idlclass,
64                                           map : map,
65                                           key : key,
66                                           field : field.getAttribute('name'),
67                                           reltype : reltype,
68                                           link : link,
69                                           fullpath : fullpath
70                                         }
71                                 );
72                         }
73
74                         populateSourcesSubtree( item.lastChild, subtreeList );
75                 }
76         } else if (item) {
77                 var classtree = $('class-treetop');
78
79                 while (classtree.childNodes.length)
80                         classtree.removeChild(classtree.lastChild);
81
82                 var c = getIDLClass( item.getAttribute('idlclass') );
83
84                 populateDetailTree(
85                         classtree,
86                         c,
87                         item
88                 );
89         }
90
91         return true;
92 }
93
94 function transformSelectHandler (noswap) {
95         var transform_tree = $('trans-view');
96         var transform = getSelectedItems(transform_tree)[0];
97
98         if (transform) {
99                 if (transform.getAttribute('aggregate') == 'true') {
100                         $( 'filter_tab' ).setAttribute('disabled','true');
101                         $( 'aggfilter_tab' ).setAttribute('disabled','false');
102
103                         if (!noswap && $( 'filter_tab' ).selected)
104                                 $( 'filter_tab' ).parentNode.selectedItem = $( 'aggfilter_tab' );
105                 } else {
106                         $( 'filter_tab' ).setAttribute('disabled','false');
107                         $( 'aggfilter_tab' ).setAttribute('disabled','true');
108
109                         if (!noswap && $( 'aggfilter_tab' ).selected)
110                                 $( 'aggfilter_tab' ).parentNode.selectedItem = $( 'filter_tab' );
111                 }
112         }
113
114         if ($( 'filter_tab' ).selected) {
115                 if ($( 'filter_tab' ).getAttribute('disabled') == 'true')
116                         $( 'source-add' ).setAttribute('disabled','true');
117                 else
118                         $( 'source-add' ).setAttribute('disabled','false');
119
120         } else if ($( 'aggfilter_tab' ).selected) {
121                 if ($( 'aggfilter_tab' ).getAttribute('disabled') == 'true')
122                         $( 'source-add' ).setAttribute('disabled','true');
123                 else
124                         $( 'source-add' ).setAttribute('disabled','false');
125
126         } else if ($( 'dis_tab' ).selected) {
127                 $( 'source-add' ).setAttribute('disabled','false');
128         }
129 }
130
131 function detailTreeHandler (args) {
132         var class_tree = $('class-view');
133         var transform_tree = $('trans-treetop');
134
135         while (transform_tree.childNodes.length)
136                 transform_tree.removeChild(transform_tree.lastChild);
137
138         var class_items = getSelectedItems(class_tree);;
139
140         var transforms = new Object(); 
141         for (var i in class_items) {
142                 var item = class_items[i];
143                 var dtype = item.lastChild.lastChild.getAttribute('label');
144
145                 var item_transforms = getTransforms({ datatype : dtype });
146
147                 for (var j in item_transforms) {
148                         transforms[item_transforms[j]] = OILS_RPT_TRANSFORMS[item_transforms[j]];
149                         transforms[item_transforms[j]].name = item_transforms[j];
150                 }
151         }
152
153         var transformList = [];
154         for (var i in transforms) {
155                 transformList.push( transforms[i] );
156         }
157
158         transformList.sort( sortHashLabels );
159
160         $( 'aggfilter_tab' ).setAttribute('disabled','true');
161
162         for (var i in transformList) {
163                 var t = transformList[i];
164                 transform_tree.appendChild(
165                         createTreeItem(
166                                 { aggregate : t.aggregate,
167                                   name : t.name,
168                                   alias : t.label,
169                                   params : t.params,
170                                 },
171                                 createTreeRow(
172                                         {},
173                                         createTreeCell( { label : t.label } ),
174                                         createTreeCell( { label : t.params ? t.params : '0' } ),
175                                         createTreeCell( { label : t.datatype.length > 0 ?  t.datatype.join(', ') : 'all' } ),
176                                         createTreeCell( { label : t.aggregate ?  'Aggregate' : 'Non-Aggregate' } )
177                                 )
178                         )
179                 );
180
181                 if (t.aggregate) $( 'aggfilter_tab' ).setAttribute('disabled','false');
182         }
183
184         transformSelectHandler(true);
185
186         return true;
187 }
188
189
190