adding QR codes
This commit is contained in:
parent
f2a4a02af8
commit
a83a3d125d
@ -47,10 +47,12 @@ init: function() {
|
||||
activateRouteFeatures: function() {
|
||||
OSRM.Printing.activate();
|
||||
OSRM.G.map.locationsControl.activateRoute();
|
||||
OSRM.G.active_shortlink = null; // delete shortlink when new route is shown (RoutingDescription calls this method!)
|
||||
},
|
||||
deactivateRouteFeatures: function() {
|
||||
OSRM.Printing.deactivate();
|
||||
OSRM.G.map.locationsControl.deactivateRoute();
|
||||
OSRM.G.active_shortlink = null; // delete shortlink when the route is hidden
|
||||
},
|
||||
|
||||
// click: button "reset"
|
||||
|
1215
WebContent/qrcodes/QRCode.js
Normal file
1215
WebContent/qrcodes/QRCode.js
Normal file
File diff suppressed because it is too large
Load Diff
71
WebContent/qrcodes/qrcodes.css
Normal file
71
WebContent/qrcodes/qrcodes.css
Normal file
@ -0,0 +1,71 @@
|
||||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU AFFERO General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
or see http://www.gnu.org/licenses/agpl.txt.
|
||||
*/
|
||||
|
||||
/* OSRM CSS styles for qr codes */
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
/* page setup */
|
||||
body
|
||||
{
|
||||
margin: 10;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
/* containers */
|
||||
#qrcode-container
|
||||
{
|
||||
text-align:center;
|
||||
}
|
||||
#qrcode-link
|
||||
{
|
||||
margin-top:10px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
/* qrcode table for IE8 */
|
||||
.qrcode
|
||||
{
|
||||
border-spacing:0px;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
}
|
||||
.black
|
||||
{
|
||||
background-color:#000000;
|
||||
width:6px;
|
||||
height:6px;
|
||||
padding:0px;
|
||||
}
|
||||
.white
|
||||
{
|
||||
background-color:#FFFFFF;
|
||||
width:6px;
|
||||
height:6px;
|
||||
padding:0px;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
/* fonts */
|
||||
.base-font
|
||||
{
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
}
|
48
WebContent/qrcodes/qrcodes.html
Normal file
48
WebContent/qrcodes/qrcodes.html
Normal file
@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<!--
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU AFFERO General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
or see http://www.gnu.org/licenses/agpl.txt.
|
||||
-->
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
|
||||
<!-- head -->
|
||||
<head>
|
||||
|
||||
<!-- metatags -->
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
<title>OSRM Website</title>
|
||||
<meta name="description" content="OSRM Website"/>
|
||||
<meta name="author" content="Dennis Schieferdecker" />
|
||||
|
||||
<!-- stylesheets -->
|
||||
<link rel="stylesheet" href="qrcodes.css" type="text/css"/>
|
||||
|
||||
<!-- scripts -->
|
||||
<script src="qrcodes.js" type="text/javascript" ></script>
|
||||
<script src="QRCode.js" type="text/javascript" ></script>
|
||||
</head>
|
||||
|
||||
|
||||
<!-- body -->
|
||||
<body>
|
||||
|
||||
<div id="qrcode-container"></div>
|
||||
<div id="qrcode-link" class="base-font"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
102
WebContent/qrcodes/qrcodes.js
Normal file
102
WebContent/qrcodes/qrcodes.js
Normal file
@ -0,0 +1,102 @@
|
||||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU AFFERO General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
or see http://www.gnu.org/licenses/agpl.txt.
|
||||
*/
|
||||
|
||||
/*
|
||||
The word "QR Code" is registered trademark of DENSO WAVE INCORPORATED.
|
||||
http://www.denso-wave.com/qrcode/faqpatent-e.html
|
||||
|
||||
Coding ideas were taken from JavaScript-HTML5 QRCode Generator,
|
||||
copyright (c) 2011 by Amanuel Tewolde, licensed under MIT license.
|
||||
http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
|
||||
// initialization for QR Code window
|
||||
// [qr code creation / error handling]
|
||||
|
||||
// build and show qr code
|
||||
function createQRCode(text) {
|
||||
// settings
|
||||
var QRCodeVersion = 4;
|
||||
var dotsize = 6;
|
||||
|
||||
// create qrcode
|
||||
// [when storing longer strings, verify if QRCodeVersion is still sufficient -> catch errors]
|
||||
var qrcode = new QRCode(QRCodeVersion, QRErrorCorrectLevel.H);
|
||||
qrcode.addData(text);
|
||||
qrcode.make();
|
||||
var qrsize = qrcode.getModuleCount();
|
||||
|
||||
// HTML5 capable browsers
|
||||
if(!window.opener.OSRM.Browser.IE6_8) {
|
||||
// fill canvas
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.setAttribute('height', dotsize*qrsize );
|
||||
canvas.setAttribute('width', dotsize*qrsize );
|
||||
|
||||
var context = canvas.getContext('2d');
|
||||
for (var x = 0; x < qrsize; x++)
|
||||
for (var y = 0; y < qrsize; y++) {
|
||||
if (qrcode.isDark(y, x))
|
||||
context.fillStyle = "rgb(0,0,0)";
|
||||
else
|
||||
context.fillStyle = "rgb(255,255,255)";
|
||||
context.fillRect ( x*dotsize, y*dotsize, dotsize, dotsize);
|
||||
}
|
||||
|
||||
// create png
|
||||
var image = document.createElement("img");
|
||||
image.id = "qrcode";
|
||||
image.src = canvas.toDataURL("image/png");
|
||||
document.getElementById("qrcode-container").appendChild(image);
|
||||
|
||||
// IE8...
|
||||
} else {
|
||||
// fill table
|
||||
var html = "";
|
||||
html += "<table class='qrcode'>";
|
||||
for (var y = 0; y < qrsize; y++) {
|
||||
html += "<tr>";
|
||||
for (var x = 0; x < qrsize; x++) {
|
||||
if (qrcode.isDark(y, x))
|
||||
html += "<td class='black'/>";
|
||||
else
|
||||
html += "<td class='white'/>";
|
||||
}
|
||||
html += "</tr>";
|
||||
}
|
||||
html += "</table>";
|
||||
|
||||
// add html to window
|
||||
document.getElementById("qrcode-container").innerHTML = html;
|
||||
}
|
||||
document.getElementById("qrcode-link").innerHTML = text;
|
||||
}
|
||||
|
||||
|
||||
// populate window with qrcode or with error message
|
||||
function onLoad() {
|
||||
if( window.opener.OSRM.G.active_shortlink )
|
||||
createQRCode(window.opener.OSRM.G.active_shortlink);
|
||||
else
|
||||
createErrorMessage();
|
||||
}
|
||||
|
||||
|
||||
//start populating the window when it is fully loaded - and only if it was loaded from OSRM
|
||||
if(window.opener && window.opener.OSRM)
|
||||
window.opener.OSRM.Browser.onLoadHandler( onLoad, window );
|
@ -37,6 +37,8 @@ init: function() {
|
||||
OSRM.G.markers = new OSRM.Markers();
|
||||
OSRM.G.route = new OSRM.Route();
|
||||
OSRM.G.response = { via_points:[] };
|
||||
|
||||
OSRM.RoutingDescription.init();
|
||||
},
|
||||
|
||||
|
||||
|
@ -21,6 +21,19 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
||||
|
||||
OSRM.RoutingDescription = {
|
||||
|
||||
// directory with qrcodes files
|
||||
QR_DIRECTORY: 'qrcodes/',
|
||||
|
||||
// initialization of required variables and events
|
||||
init: function() {
|
||||
OSRM.G.active_shortlink = null;
|
||||
OSRM.Browser.onUnloadHandler( OSRM.RoutingDescription.uninit );
|
||||
},
|
||||
uninit: function() {
|
||||
if( OSRM.G.qrcodewindow )
|
||||
OSRM.G.qrcodewindow.close();
|
||||
},
|
||||
|
||||
// route description events
|
||||
onClickRouteDescription: function(lat, lng) {
|
||||
OSRM.G.markers.highlight.setPosition( new L.LatLng(lat, lng) );
|
||||
@ -39,14 +52,24 @@ onClickCreateShortcut: function(src){
|
||||
document.getElementById('route-link').innerHTML = '['+OSRM.loc("GENERATE_LINK_TO_ROUTE")+']';
|
||||
},
|
||||
showRouteLink: function(response){
|
||||
if(!response[OSRM.DEFAULTS.SHORTENER_REPLY_PARAMETER])
|
||||
if(!response || !response[OSRM.DEFAULTS.SHORTENER_REPLY_PARAMETER]) {
|
||||
OSRM.RoutingDescription.showRouteLink_TimeOut();
|
||||
else
|
||||
document.getElementById('route-link').innerHTML = '[<a class="route-link" href="' +response[OSRM.DEFAULTS.SHORTENER_REPLY_PARAMETER]+ '">'+response[OSRM.DEFAULTS.SHORTENER_REPLY_PARAMETER]+'</a>]';
|
||||
return;
|
||||
}
|
||||
|
||||
OSRM.G.active_shortlink = response[OSRM.DEFAULTS.SHORTENER_REPLY_PARAMETER];
|
||||
document.getElementById('route-link').innerHTML =
|
||||
'[<a class="route-link" onClick="OSRM.RoutingDescription.showQRCode();">'+OSRM.loc("QR")+'</a>]' + ' ' +
|
||||
'[<a class="route-link" href="' +OSRM.G.active_shortlink+ '">'+OSRM.G.active_shortlink.substring(7)+'</a>]';
|
||||
},
|
||||
showRouteLink_TimeOut: function(){
|
||||
document.getElementById('route-link').innerHTML = '['+OSRM.loc("LINK_TO_ROUTE_TIMEOUT")+']';
|
||||
},
|
||||
showQRCode: function(response){
|
||||
if( OSRM.G.qrcodewindow )
|
||||
OSRM.G.qrcodewindow.close();
|
||||
OSRM.G.qrcodewindow = window.open( OSRM.RoutingDescription.QR_DIRECTORY+"qrcodes.html","","width=280,height=240,left=100,top=100,dependent=yes,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=no");
|
||||
},
|
||||
|
||||
// handling of routing description
|
||||
show: function(response) {
|
||||
|
Loading…
Reference in New Issue
Block a user