]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/reports/xul/utilities.js
LP1642337: Reporter Boolean Filters
[Evergreen.git] / Open-ILS / web / reports / xul / utilities.js
1 function $ () {
2         var elements = new Array();
3
4         for (var i = 0; i < arguments.length; i++) {
5                 var element = arguments[i];
6
7                 if (typeof element == 'string')
8                         element = document.getElementById(element) || undefined;
9
10                 if (arguments.length == 1)
11                         return element;
12
13                 elements.push( element );
14         }
15
16         return elements;
17 }
18
19 function _l(l) { location.href = l + location.search; }
20
21 function map (func, list) {
22         var ret = [];
23         for (var i = 0; i < list.length; i++) ret.push(func(list[i]));
24         return ret;
25 }
26
27 function grep (func, list) {
28         var ret = [];
29         for (var i = 0; i < list.length; i++) if(func(list[i])) ret.push(list[i]);
30         return ret;
31 }
32
33 function getSelectedItems(tree) {
34         var start = new Object();
35         var end = new Object();
36         var numRanges = tree.view.selection.getRangeCount();
37                         
38         var itemList = [];
39         for (var t=0; t<numRanges; t++){
40                 tree.view.selection.getRangeAt(t,start,end);
41                 for (var v=start.value; v<=end.value; v++){
42                         itemList.push( tree.getElementsByTagName('treeitem')[v]);
43                 }       
44         }               
45                 
46         return itemList;
47 }
48
49 function findAncestor (node, name) {
50         if (node.nodeName == name) return node;
51         if (!node.parentNode) return null;
52         return findAncestor(node.parentNode, name);
53 }       
54
55 function findAncestorStack (node, name, stack) {
56         if (node.nodeName == name) stack.push(node);
57         if (!node.parentNode) return null;
58         findAncestorStack(node.parentNode, name, stack);
59 }               
60
61 function filterByAttribute(nodes,attrN,attrV) {
62         var aResponse = [];
63         for ( var i = 0; i < nodes.length; i++ ) {
64                 if ( nodes[i].getAttribute(attrN) == attrV ) aResponse.push(nodes[i]);
65         }               
66         return aResponse;
67 }       
68
69 function filterByAttributeNS(nodes,ns,attrN,attrV) {
70         var aResponse = [];
71         for ( var i = 0; i < nodes.length; i++ ) {
72                 if ( nodes[i].getAttributeNS(ns,attrN) == attrV ) aResponse.push(nodes[i]);
73         }
74         return aResponse;
75 }
76
77 function getKeys (hash) {
78         var k = [];
79         for (var i in hash) k.push(i);
80         return k;
81 }
82
83 /* This just lets us return an array consistent with the filterBy* functions */
84 function nodelistToArray (nodes) {
85         var aResponse = [];
86         for ( var i = 0; i < nodes.length; i++ ) {
87                 aResponse.push(nodes[i]);
88         }
89         return aResponse;
90 }