]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_utils.js
continued work on the folder contents editor and general folder window framework
[Evergreen.git] / Open-ILS / web / reports / oils_rpt_utils.js
1 var oilsRptID = 0;
2 var oilsRptID2 = 0;
3 var oilsRptID3 = 0;
4 function oilsNextId() {
5         return 'oils_'+ (oilsRptID++);
6 }
7
8 function oilsNextNumericId() {
9         return oilsRptID3++;
10 }
11
12 function oilsRptNextParam() {
13         return '::PARAM'+ (oilsRptID2++);
14 }
15
16
17 function oilsRptCacheObject(obj) {
18         var id = oilsNextId();
19         oilsRptObjectCache[id] = obj;
20         return id;
21 }
22
23 function oilsRptFindObject(id) {
24         return oilsRptObjectCache[id];
25 }
26
27
28 /* -------------------------------------------- */
29 function oilsRptObject() {}
30 oilsRptObject.prototype.init = function() {
31         oilsRptObject.cache(this);
32 }
33 oilsRptObject.objectCache = {};
34 oilsRptObject.find = function(id) {
35         return oilsRptObject.objectCache[id];
36 }
37 oilsRptObject.cache = function(obj) {
38         obj.id = oilsNextNumericId();
39         oilsRptObject.objectCache[obj.id] = obj;
40         return obj.id;
41 }
42 /* -------------------------------------------- */
43
44
45
46
47
48 function oilsRptResetParams() {
49         oilsRptID2 = 0;
50 }
51
52 function nodeText(id) {
53         if($(id))
54                 return $(id).innerHTML;
55         return "";
56 }
57
58 function print_tabs(t) {
59         var r = '';
60         for (var j = 0; j < t; j++ ) { r = r + "  "; }
61         return r;
62 }
63
64
65 function oilsRptDebug() {
66         _debug("\n-------------------------------------\n");
67         _debug(oilsRpt.toString());
68         _debug("\n-------------------------------------\n");
69         if(!oilsRptDebugEnabled) return;
70         if(!oilsRptDebugWindow)
71                 oilsRptDebugWindow = window.open('','Debug','resizable,width=700,height=500,scrollbars=1'); 
72
73         oilsRptDebugWindow.document.body.innerHTML = oilsRpt.toHTMLString();
74 }
75
76 /* pretty print JSON */
77 function formatJSON(s) {
78         var r = ''; var t = 0;
79         for (var i in s) {
80                 if (s[i] == '{' || s[i] == '[' ) {
81                         r = r + s[i] + "\n" + print_tabs(++t);
82                 } else if (s[i] == '}' || s[i] == ']') {
83                         t--; r = r + "\n" + print_tabs(t) + s[i];
84                 } else if (s[i] == ',') {
85                         r = r + s[i] + "\n" + print_tabs(t);
86                 } else {
87                         r = r + s[i];
88                 }
89         }
90         return r;
91 }
92
93
94 function print_tabs_html(t) {
95         var r = '';
96         for (var j = 0; j < t; j++ ) { r = r + "&nbsp;&nbsp;"; }
97         return r;
98 }
99
100 function formatJSONHTML(s) {
101         var r = ''; var t = 0;
102         for (var i in s) {
103                 if (s[i] == '{' || s[i] == '[') {
104                         r = r + s[i] + "<br/>" + print_tabs_html(++t);
105                 } else if (s[i] == '}' || s[i] == ']') {
106                         t--; r = r + "<br/>" + print_tabs_html(t) + s[i];
107                 } else if (s[i] == ',') {
108                         r = r + s[i];
109                         r = r + "<br/>" + print_tabs_html(t);
110                 } else {
111                         r = r + s[i];
112                 }
113         }
114         return r;
115 }
116
117 function setMousePos(e) {
118         oilsMouseX = e.pageX
119         oilsMouseY = e.pageY
120         oilsPageXMid = parseInt(window.innerHeight / 2);
121         oilsPageYMid = parseInt(window.innerWidth / 2);
122 }  
123
124 function buildFloatingDiv(div, width) {
125         var left = parseInt((window.innerWidth / 2) - (width/2));
126         var halfh = parseInt(div.clientHeight / 2);
127         var top = oilsMouseY - halfh + 50;
128         var dbot = top + halfh;
129         if( dbot > window.innerHeight ) {
130                 top = oilsMouseY - div.clientHeight - 10;
131         }
132         div.setAttribute('style', 'left:'+left+'px; top:'+top+'px; width:'+width+'px');
133 }
134
135
136 function mergeObjects( src, obj ) {
137         for( var i in obj ) {
138                 if( typeof obj[i] == 'string' ) {
139                         src[i] = obj[i];
140                 } else {
141                         if(src[i]) mergeObjects(src[i], obj[i]);
142                         else src[i] = obj[i];
143                 }
144         }
145 }
146
147
148 /* scours the doc for elements with IDs.  When it finds one,
149         it grabs the dom node and sets a reference to the node at DOM[id]; */
150 function oilsRptIdObjects(node) {
151         if(!node) node = document.documentElement;
152         if( node.nodeType != 1 ) return;
153         var id = node.getAttribute('id');
154         if( id ) eval("DOM."+id+"=$('"+id+"');");
155         var children = node.childNodes;
156         for( var c = 0; c < children.length; c++ ) 
157                 oilsRptIdObjects(children[c]);
158 }
159
160
161 function oilsRptObjectKeys(obj) {
162         var k = [];
163         for( var i in obj ) k.push(i);
164         return k;
165 }
166