]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_utils.js
ever more toil
[working/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 /* returns just the column name */
46 function oilsRptPathCol(path) {
47         var parts = path.split(/-/);
48         return parts.pop();
49 }
50
51 /* returns the IDL class of the selected column */
52 function oilsRptPathClass(path) {
53         var parts = path.split(/-/);
54         parts.pop();
55         return parts.pop();
56 }
57
58 /* returns everything prior to the column name */
59 function oilsRptPathRel(path) {
60         var parts = path.split(/-/);
61         parts.pop();
62         return parts.join('-');
63 }
64
65
66
67 function oilsRptResetParams() {
68         oilsRptID2 = 0;
69 }
70
71 function nodeText(id) {
72         if($(id))
73                 return $(id).innerHTML;
74         return "";
75 }
76
77 function print_tabs(t) {
78         var r = '';
79         for (var j = 0; j < t; j++ ) { r = r + "  "; }
80         return r;
81 }
82
83
84 function oilsRptDebug() {
85         _debug("\n-------------------------------------\n");
86         _debug(oilsRpt.toString());
87         _debug("\n-------------------------------------\n");
88         if(!oilsRptDebugEnabled) return;
89         if(!oilsRptDebugWindow)
90                 oilsRptDebugWindow = window.open('','Debug','resizable,width=700,height=500,scrollbars=1'); 
91
92         oilsRptDebugWindow.document.body.innerHTML = oilsRpt.toHTMLString();
93 }
94
95 /* pretty print JSON */
96 function formatJSON(s) {
97         var r = ''; var t = 0;
98         for (var i in s) {
99                 if (s[i] == '{' || s[i] == '[' ) {
100                         r = r + s[i] + "\n" + print_tabs(++t);
101                 } else if (s[i] == '}' || s[i] == ']') {
102                         t--; r = r + "\n" + print_tabs(t) + s[i];
103                 } else if (s[i] == ',') {
104                         r = r + s[i] + "\n" + print_tabs(t);
105                 } else {
106                         r = r + s[i];
107                 }
108         }
109         return r;
110 }
111
112
113 function print_tabs_html(t) {
114         var r = '';
115         for (var j = 0; j < t; j++ ) { r = r + "&nbsp;&nbsp;"; }
116         return r;
117 }
118
119 function formatJSONHTML(s) {
120         var r = ''; var t = 0;
121         for (var i in s) {
122                 if (s[i] == '{' || s[i] == '[') {
123                         r = r + s[i] + "<br/>" + print_tabs_html(++t);
124                 } else if (s[i] == '}' || s[i] == ']') {
125                         t--; r = r + "<br/>" + print_tabs_html(t) + s[i];
126                 } else if (s[i] == ',') {
127                         r = r + s[i];
128                         r = r + "<br/>" + print_tabs_html(t);
129                 } else {
130                         r = r + s[i];
131                 }
132         }
133         return r;
134 }
135
136 function setMousePos(e) {
137         oilsMouseX = e.pageX
138         oilsMouseY = e.pageY
139         oilsPageXMid = parseInt(window.innerHeight / 2);
140         oilsPageYMid = parseInt(window.innerWidth / 2);
141 }  
142
143 function buildFloatingDiv(div, width) {
144         var left = parseInt((window.innerWidth / 2) - (width/2));
145         var halfh = parseInt(div.clientHeight / 2);
146         var top = oilsMouseY - halfh + 50;
147         var dbot = top + halfh;
148         if( dbot > window.innerHeight ) {
149                 top = oilsMouseY - div.clientHeight - 10;
150         }
151         div.setAttribute('style', 'left:'+left+'px; top:'+top+'px; width:'+width+'px');
152 }
153
154
155 function mergeObjects( src, obj ) {
156         for( var i in obj ) {
157                 if( typeof obj[i] == 'string' ) {
158                         src[i] = obj[i];
159                 } else {
160                         if(src[i]) mergeObjects(src[i], obj[i]);
161                         else src[i] = obj[i];
162                 }
163         }
164 }
165
166
167 /* scours the doc for elements with IDs.  When it finds one,
168         it grabs the dom node and sets a reference to the node at DOM[id]; */
169 function oilsRptIdObjects(node) {
170         if(!node) node = document.documentElement;
171         if( node.nodeType != 1 ) return;
172         var id = node.getAttribute('id');
173         if( id ) eval("DOM."+id+"=$('"+id+"');");
174         var children = node.childNodes;
175         for( var c = 0; c < children.length; c++ ) 
176                 oilsRptIdObjects(children[c]);
177 }
178
179
180 function oilsRptObjectKeys(obj) {
181         var k = [];
182         for( var i in obj ) k.push(i);
183         return k;
184 }
185
186
187 /* makes cls a subclass of parent */
188 function oilsRptSetSubClass(cls, parent) {
189         var str = cls+'.prototype = new '+parent+'();\n';
190         str += cls+'.prototype.constructor = '+cls+';\n';
191         str += cls+'.baseClass = '+parent+'.prototype.constructor;\n';
192         str += cls+'.prototype.super = '+parent+'.prototype;\n';
193         eval(str);
194 }
195