| 
									
										
										
										
											2019-08-14 22:09:18 -06:00
										 |  |  | /* | 
					
						
							|  |  |  |  * This Source Code Form is subject to the terms of the Mozilla Public | 
					
						
							|  |  |  |  * License, v. 2.0. If a copy of the MPL was not distributed with this | 
					
						
							|  |  |  |  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var platform_type = ""; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var platform_theme = "md"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var app_version = "2.0.0"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var nw_tray = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var openBrowser = function (url) { | 
					
						
							|  |  |  |     window.open(url); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var openSystemBrowser = function (url) { | 
					
						
							|  |  |  |     window.open(url); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var scanBarcode = function (success, error) { | 
					
						
							|  |  |  |     app.dialog.alert("You can't scan barcodes with this device.", "Sorry!"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var getLocation = function (success, error) { | 
					
						
							|  |  |  |     if ("geolocation" in navigator) { | 
					
						
							|  |  |  |         navigator.geolocation.getCurrentPosition(function (position) { | 
					
						
							|  |  |  |             success(position); | 
					
						
							|  |  |  |         }, function (err) { | 
					
						
							|  |  |  |             if (typeof error == "function") { | 
					
						
							|  |  |  |                 error(err.message); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, { | 
					
						
							|  |  |  |             enableHighAccuracy: true, | 
					
						
							|  |  |  |             timeout: 5000, | 
					
						
							|  |  |  |             maximumAge: 0 | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         if (typeof error == "function") { | 
					
						
							|  |  |  |             error("Location is unavailable."); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var watchLocation = function (success, error) { | 
					
						
							|  |  |  |     if ("geolocation" in navigator) { | 
					
						
							|  |  |  |         navigator.geolocation.watchPosition(function (position) { | 
					
						
							|  |  |  |             success(position); | 
					
						
							|  |  |  |         }, function (err) { | 
					
						
							|  |  |  |             if (typeof error == "function") { | 
					
						
							|  |  |  |                 error(err.message); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, { | 
					
						
							|  |  |  |             enableHighAccuracy: true, | 
					
						
							|  |  |  |             timeout: 5000, | 
					
						
							|  |  |  |             maximumAge: 0 | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         if (typeof error == "function") { | 
					
						
							|  |  |  |             error("Location is unavailable."); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function initCordova() { | 
					
						
							|  |  |  |     platform_type = "cordova"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Handle back button to close things
 | 
					
						
							|  |  |  |     document.addEventListener("backbutton", function (event) { | 
					
						
							| 
									
										
										
										
											2019-08-23 18:53:11 -06:00
										 |  |  |         router.back({force: true, ignoreCache: true}); | 
					
						
							| 
									
										
										
										
											2019-08-14 22:09:18 -06:00
										 |  |  |     }, false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     document.addEventListener("deviceready", function () { | 
					
						
							| 
									
										
										
										
											2019-08-23 19:23:20 -06:00
										 |  |  |         if (localStorage.getItem("wakelock") == "true") { | 
					
						
							| 
									
										
										
										
											2019-09-10 20:34:05 -06:00
										 |  |  |             window.powerManagement.acquire(function () { | 
					
						
							|  |  |  |                 console.log('Wakelock acquired'); | 
					
						
							| 
									
										
										
										
											2019-08-23 19:23:20 -06:00
										 |  |  |             }, function () { | 
					
						
							| 
									
										
										
										
											2019-09-10 20:34:05 -06:00
										 |  |  |                 console.log('Failed to acquire wakelock'); | 
					
						
							| 
									
										
										
										
											2019-08-23 19:23:20 -06:00
										 |  |  |             }); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             window.powerManagement.release(function () { | 
					
						
							|  |  |  |                 console.log('Wakelock released'); | 
					
						
							|  |  |  |             }, function () { | 
					
						
							|  |  |  |                 console.log('Failed to release wakelock'); | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-08-14 22:09:18 -06:00
										 |  |  |     }, false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     openBrowser = function (url) { | 
					
						
							|  |  |  |         cordova.InAppBrowser.open(url, '_blank', 'location=yes'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     openExternalBrowser = function (url) { | 
					
						
							|  |  |  |         window.open(url, '_system', ''); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     scanBarcode = function (success, error) { | 
					
						
							|  |  |  |         cordova.plugins.barcodeScanner.scan( | 
					
						
							|  |  |  |                 function (result) { | 
					
						
							|  |  |  |                     if (!result.cancelled) { | 
					
						
							|  |  |  |                         success(result.text); | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 function (err) { | 
					
						
							|  |  |  |                     if (typeof error == "function") { | 
					
						
							|  |  |  |                         error(err); | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     showTorchButton: true, | 
					
						
							| 
									
										
										
										
											2019-08-23 18:53:11 -06:00
										 |  |  |                     prompt: "Scan barcode", | 
					
						
							| 
									
										
										
										
											2019-08-14 22:09:18 -06:00
										 |  |  |                     resultDisplayDuration: 0, | 
					
						
							|  |  |  |                     disableSuccessBeep: true | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function initNW() { | 
					
						
							|  |  |  |     platform_type = "nw"; | 
					
						
							|  |  |  |     platform_theme = "md"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     openBrowser = function (url) { | 
					
						
							|  |  |  |         nw.Window.open(url, { | 
					
						
							|  |  |  |             id: url | 
					
						
							|  |  |  |         }, function (browserwin) { | 
					
						
							|  |  |  |             // Add menubar so the user can navigate around if they click a link
 | 
					
						
							|  |  |  |             var browsermenu = new nw.Menu({type: 'menubar'}); | 
					
						
							|  |  |  |             browsermenu.append(new nw.MenuItem({ | 
					
						
							|  |  |  |                 label: "Back", | 
					
						
							|  |  |  |                 click: function () { | 
					
						
							|  |  |  |                     browserwin.window.history.back(); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             })); | 
					
						
							|  |  |  |             browsermenu.append(new nw.MenuItem({ | 
					
						
							|  |  |  |                 label: "Forward", | 
					
						
							|  |  |  |                 click: function () { | 
					
						
							|  |  |  |                     browserwin.window.history.forward(); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             })); | 
					
						
							|  |  |  |             browsermenu.append(new nw.MenuItem({ | 
					
						
							|  |  |  |                 label: "Home", | 
					
						
							|  |  |  |                 click: function () { | 
					
						
							|  |  |  |                     browserwin.window.location.href = url; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             })); | 
					
						
							|  |  |  |             browserwin.menu = browsermenu; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     openExternalBrowser = function (url) { | 
					
						
							|  |  |  |         require('nw.gui').Shell.openExternal(url); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $("body").append('<script src="node_modules/@zxing/library/umd/index.min.js"></script>'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     scanBarcode = function (success, error) { | 
					
						
							|  |  |  |         $("#web-barcode-ui").removeClass("hidden"); | 
					
						
							|  |  |  |         // Stolen from https://zxing-js.github.io/library/examples/multi-camera/
 | 
					
						
							|  |  |  |         const codeReader = new ZXing.BrowserMultiFormatReader(); | 
					
						
							|  |  |  |         console.log('ZXing code reader initialized'); | 
					
						
							|  |  |  |         codeReader.getVideoInputDevices() | 
					
						
							|  |  |  |                 .then((videoInputDevices) => { | 
					
						
							|  |  |  |                     selectedDeviceId = videoInputDevices[0].deviceId; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     codeReader.decodeFromInputVideoDeviceContinuously(selectedDeviceId, 'barcode-viewer', (result, err) => { | 
					
						
							|  |  |  |                         if (result) { | 
					
						
							|  |  |  |                             console.log(result); | 
					
						
							|  |  |  |                             codeReader.reset(); | 
					
						
							|  |  |  |                             $("#web-barcode-ui").addClass("hidden"); | 
					
						
							|  |  |  |                             success(result.text); | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                         if (err && !(err instanceof ZXing.NotFoundException)) { | 
					
						
							|  |  |  |                             console.error(err); | 
					
						
							|  |  |  |                             codeReader.reset(); | 
					
						
							|  |  |  |                             $("#web-barcode-ui").addClass("hidden"); | 
					
						
							|  |  |  |                             error(err); | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     }); | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |                 .catch((err) => { | 
					
						
							|  |  |  |                     console.error(err); | 
					
						
							|  |  |  |                 }); | 
					
						
							|  |  |  |         $("#web-barcode-ui").on("click", function () { | 
					
						
							|  |  |  |             codeReader.reset(); | 
					
						
							|  |  |  |             $("#web-barcode-ui").addClass("hidden"); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function initBrowser() { | 
					
						
							|  |  |  |     platform_type = "browser"; | 
					
						
							|  |  |  |     platform_theme = "md"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     openBrowser = function (url) { | 
					
						
							|  |  |  |         window.open(url); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function initPlatform() { | 
					
						
							|  |  |  |     if (typeof cordova !== 'undefined') { | 
					
						
							|  |  |  |         initCordova(); | 
					
						
							|  |  |  |     } else if (typeof nw !== 'undefined') { | 
					
						
							|  |  |  |         initNW(); | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         initBrowser(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $.getJSON("package.json", function (data) { | 
					
						
							|  |  |  |         app_version = data.version; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | } |