From db8703ab7af236bdeb7a52ce1b11b9e98f8ed68d Mon Sep 17 00:00:00 2001 From: "Kasper D. Fischer" Date: Tue, 16 Sep 2014 11:23:01 +0000 Subject: [PATCH] Added print button to web map. --- .gitattributes | 4 + www/external/easyPrint.css | 20 ++++ www/external/jQuery.print.js | 161 ++++++++++++++++++++++++++++++ www/external/leaflet.easyPrint.js | 28 ++++++ www/external/print.png | Bin 0 -> 219 bytes www/index.html.de | 3 + www/map.js | 5 +- 7 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 www/external/easyPrint.css create mode 100644 www/external/jQuery.print.js create mode 100644 www/external/leaflet.easyPrint.js create mode 100644 www/external/print.png diff --git a/.gitattributes b/.gitattributes index e56e247..e105340 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,7 +4,9 @@ www/copyright.inc.de -text www/external/TileLayer.Grayscale.js -text www/external/css/dvf.css -text www/external/css/leaflet.label.css -text +www/external/easyPrint.css -text www/external/first.png -text +www/external/jQuery.print.js -text www/external/jquery.localtime-0.9.1.min.js -text www/external/jquery.tablesorter.min.js -text www/external/jquery.tablesorter.pager.css -text @@ -13,10 +15,12 @@ www/external/jquery.tablesorter.widgets.min.js -text www/external/last.png -text www/external/leaflet-dvf.markers.min.js -text www/external/leaflet.css -text +www/external/leaflet.easyPrint.js -text www/external/leaflet.js -text www/external/leaflet.label.js -text www/external/next.png -text www/external/prev.png -text +www/external/print.png -text www/external/sprintf.min.js -text www/external/theme.blue.css -text www/external/widget-pager.js -text diff --git a/www/external/easyPrint.css b/www/external/easyPrint.css new file mode 100644 index 0000000..d2c6544 --- /dev/null +++ b/www/external/easyPrint.css @@ -0,0 +1,20 @@ + +.leaflet-control-easyPrint a { + background:#fff url(external/print.png) no-repeat 5px; + background-size:16px 16px; + display: block; + } + + + +@media print { + + html {padding: 0px!important;} + .leaflet-control-easyPrint-button{display: none!important;} + +} + +#map { + width: 1200; + height: 800; +} diff --git a/www/external/jQuery.print.js b/www/external/jQuery.print.js new file mode 100644 index 0000000..8942ab9 --- /dev/null +++ b/www/external/jQuery.print.js @@ -0,0 +1,161 @@ +/* jQuery.print, version 1.0.3 + * (c) Sathvik Ponangi, Doers' Guild + * Licence: CC-By (http://creativecommons.org/licenses/by/3.0/) + *--------------------------------------------------------------------------*/ + +(function($) {"use strict"; + // A nice closure for our definitions + + function getjQueryObject(string) { + // Make string a vaild jQuery thing + var jqObj = $(""); + try { + jqObj = $(string).clone(); + } catch(e) { + jqObj = $("").html(string); + } + return jqObj; + } + + function isNode(o) { + /* http://stackoverflow.com/a/384380/937891 */ + return !!( typeof Node === "object" ? o instanceof Node : o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string"); + } + + + $.print = $.fn.print = function() { + // Print a given set of elements + + var options, $this, self = this; + + // console.log("Printing", this, arguments); + + if ( self instanceof $) { + // Get the node if it is a jQuery object + self = self.get(0); + } + + if (isNode(self)) { + // If `this` is a HTML element, i.e. for + // $(selector).print() + $this = $(self); + if (arguments.length > 0) { + options = arguments[0]; + } + } else { + if (arguments.length > 0) { + // $.print(selector,options) + $this = $(arguments[0]); + if (isNode($this[0])) { + if (arguments.length > 1) { + options = arguments[1]; + } + } else { + // $.print(options) + options = arguments[0]; + $this = $("html"); + } + } else { + // $.print() + $this = $("html"); + } + } + + // Default options + var defaults = { + globalStyles : true, + mediaPrint : false, + stylesheet : null, + noPrintSelector : ".no-print", + iframe : true, + append : null, + prepend : null + }; + // Merge with user-options + options = $.extend({}, defaults, (options || {})); + + var $styles = $(""); + if (options.globalStyles) { + // Apply the stlyes from the current sheet to the printed page + $styles = $("style, link, meta, title"); + } else if (options.mediaPrint) { + // Apply the media-print stylesheet + $styles = $("link[media=print]"); + } + if (options.stylesheet) { + // Add a custom stylesheet if given + $styles = $.merge($styles, $('')); + } + + // Create a copy of the element to print + var copy = $this.clone(); + // Wrap it in a span to get the HTML markup string + copy = $("").append(copy); + // Remove unwanted elements + copy.find(options.noPrintSelector).remove(); + // Add in the styles + copy.append($styles.clone()); + // Appedned content + copy.append(getjQueryObject(options.append)); + // Prepended content + copy.prepend(getjQueryObject(options.prepend)); + // Get the HTML markup string + var content = copy.html(); + // Destroy the copy + copy.remove(); + + var w, wdoc; + if (options.iframe) { + // Use an iframe for printing + try { + var $iframe = $(options.iframe + ""); + var iframeCount = $iframe.length; + if (iframeCount === 0) { + // Create a new iFrame if none is given + $iframe = $('