annotate Applications/StoneWebViewer/WebApplication/print.js @ 1575:e4a52cbbdd70

working on print
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 23 Sep 2020 17:25:25 +0200
parents e0045462a25c
children 8c5f9864545f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
1 function beforePrint(event) {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
2 var body = $('body');
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
3 body.addClass('print');
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 // because firefox does not support/executes codes after the cloned document as been rendered
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 // https://bugzilla.mozilla.org/show_bug.cgi?format=default&id=1048317
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 // we cannot calculate using the good body size for the clone document
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 // so we have to hardcode the body width (meaning we can only renders in A4 in firefox);
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 var uaParser = new UAParser();
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 var isFirefox = (uaParser.getBrowser().name === 'Firefox');
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 var isIE = (uaParser.getBrowser().name === 'IE');
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 var isEdge = (uaParser.getBrowser().name === 'Edge');
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
13 //console.log('ua parser', uaParser.getBrowser());
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
14
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
15 if (isFirefox || isIE || isEdge) {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
16 if (0) {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
17 // This is Letter
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
18 body.css('width', '8.5in');
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
19 body.css('height', '11in');
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
20 } else {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
21 // This is A4
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
22 body.css('width', '210mm');
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
23 body.css('height', '296mm'); // If using "297mm", Firefox creates a second blank page
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
24 }
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 }
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
27 $('#viewport canvas').each(function(key, canvas) {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
28 if ($(canvas).is(':visible')) {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
29 $(canvas).width($(canvas).parent().width());
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
30 $(canvas).height($(canvas).parent().height());
1563
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
31 }
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
32 });
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
34 stone.FitForPrint();
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
35 };
1563
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
36
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
37
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
38 function afterPrint() {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
39 var body = $('body');
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
40 body.removeClass('print');
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
41 body.css('width', '100%');
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
42 body.css('height', '100%');
1563
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
43 $('#viewport canvas').css('width', '100%');
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
44 $('#viewport canvas').css('height', '100%');
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
45
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
46 stone.FitForPrint();
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47 }
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
49
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
50 window.addEventListener('beforeprint', function(event) {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
51 beforePrint(event);
1563
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
52 });
e0045462a25c cont print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1562
diff changeset
53
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
54
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 var printMedia = window.matchMedia('print');
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 printMedia.addListener(function(mql) {
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
57 if (mql.matches) {
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
58 // webkit equivalent of onbeforeprint
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 beforePrint();
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60 }
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61 });
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
63
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
64 window.addEventListener('afterprint', function() {
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65 afterPrint();
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
66 });
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67
1575
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
68
e4a52cbbdd70 working on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1563
diff changeset
69 /*vm.cancelPrintMode = function() {
1562
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
70 afterPrint();
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71 }
2a4a6b967053 starting work on print
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72 */