]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/print_win.js
internal: an alternative to default_focus
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / print_win.js
1 // Print Window Functions
2 // Loaded when print.js creates a window for printing
3
4 var params = window.arguments[0];
5 window.go_print = window.arguments[1];
6 var do_print = true;
7
8 function print_init(type) {
9     if (typeof print_custom == "function") {
10         print_custom(type);
11     } else {
12         print_do_sums();
13         print_check_alt();
14         print_check_noprint();
15     }
16     if (do_print) {
17         go_print(window);
18     } else {
19         window.close();
20     }
21 }
22
23 /* Example "swap slip" code
24  * Use example:
25  * <div altgroup="print1" altid="main">
26  * <span altcheck="print1">%some_replace%</span>
27  * <!-- Other slip stuff -->
28  * </div>
29  * <div altgroup="print1" altid="alt1" style="display: none">
30  * <!-- Alt slip stuff -->
31  * </div>
32  * <div altgroup="print1" altid="alt2" style="display: none">
33  * <!-- Second alt slip stuff -->
34  * </div>
35  * <div style="display: none">
36  * <span alt="print1" altshow="alt1">Code1</span>
37  * <span alt="print1" altshow="alt2">Code2</span>
38  * </div>
39  */
40 function print_check_alt() {
41     var spans = document.getElementsByTagName('span');
42     if(!spans) return;
43     var groups_check = {};
44     var foundgroups = false;
45     for (var i = 0; i < spans.length; i++) {
46         var group = spans[i].getAttribute('altcheck');
47         if(group) {
48             groups_check[group] = spans[i].textContent;
49             foundgroups = true;
50         }
51     }
52     if(!foundgroups) return;
53     foundgroups = false;
54     var groups_show = {};
55     for (var i = 0; i < spans.length; i++) {
56         var group = spans[i].getAttribute('alt');
57         if(group && groups_check[group] && spans[i].textContent == groups_check[group]) {
58             groups_show[group] = spans[i].getAttribute('altshow');
59             foundgroups = true;
60         }
61     }
62     if(!foundgroups) return;
63     for (var i = 0; i < spans.length; i++) {
64         var group = spans[i].getAttribute('altgroup');
65         if(group && groups_check[group]) {
66             spans[i].style.display = (groups_show[group] == spans[i].getAttribute('altid') ? '' : 'none');
67         }
68     }
69     var divs = document.getElementsByTagName('div');
70     if (!divs) return;
71     for (var i = 0; i < divs.length; i++) {
72         var group = divs[i].getAttribute('altgroup');
73         if(group && groups_check[group]) {
74             divs[i].style.display = (groups_show[group] == divs[i].getAttribute('altid') ? '' : 'none');
75         }
76     }
77 }
78
79 /* Example "don't print" code
80  * Use example:
81  * <!-- blah blah -->
82  * <span noprintcheck="noprint1">%some_replace%</span>
83  * <span noprintcheck="noprint2">%some_other_replace%</span>
84  * <!-- blah blah -->
85  * <div style="display: none">
86  * <span noprint="noprint1">Code1</span>
87  * <span noprint="noprint2">Code2</span>
88  * </div>
89  */
90 function print_check_noprint() {
91     var spans = document.getElementsByTagName('span');
92     if(!spans) return;
93     var noprints = {};
94     var foundnoprints = false;
95     for (var i = 0; i < spans.length; i++) {
96         var noprint = spans[i].getAttribute('noprintcheck');
97         if(noprint) {
98             noprints[noprint] = spans[i].textContent;
99             foundnoprints = true;
100         }
101     }
102     if(!foundnoprints) return;
103     for (var i = 0; i < spans.length; i++) {
104         var noprint = spans[i].getAttribute('noprint');
105         if(noprint) {
106             if(noprints[noprint] == spans[i].textContent) {
107                 do_print = false;
108             }
109         }
110     }
111 }
112
113 /* Example "sum up" code
114  * Use example:
115  * <!-- blah blah -->
116  * <!-- Probably as line_item entries: -->
117  * <span sum="sum1">$5.00</span>
118  * <span sum="sum1">$15.00</span>
119  * <span sum="sum1">$25.00</span>
120  * <!-- blah blah -->
121  * $<span sumout="sum1" fixed="2"></span>
122  */
123 function print_do_sums() {
124     var spans = document.getElementsByTagName('span');
125     if(!spans) return;
126     var sums = {};
127     var foundsums = false;
128     for (var i = 0; i < spans.length; i++) {
129         var sumset = spans[i].getAttribute("sum");
130         if(sumset) {
131             if(typeof sums[sumset] == 'undefined') {
132                 sums[sumset] = 0.0;
133                 foundsums = true;
134             }
135             var newVal = spans[i].textContent;
136             // strip off a single non-digit character
137             // Don't want to assume dollar sign
138             // But don't strip a -
139             newVal = newVal.replace(/^[^-0-9]/,'');
140             newVal = parseFloat(newVal);
141             if(!isNaN(newVal)) {
142                 sums[sumset] += newVal;
143             }
144         }
145     }
146     if(!foundsums) return;
147     for (var i = 0; i < spans.length; i++) {
148         var sumset = spans[i].getAttribute("sumout");
149         if(sumset) {
150             if(typeof sums[sumset] == 'undefined') {
151                 sums[sumset] = 0;
152             }
153             var fixed = spans[i].getAttribute("fixed");
154             if(fixed) {
155                 fixed = parseInt(fixed);
156                 if(isNaN(fixed)) {
157                     fixed = 0;
158                 }
159                 spans[i].textContent=sums[sumset].toFixed(fixed);
160             } else {
161                 spans[i].textContent = sums[sumset];
162             }
163         }
164     }
165 }