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