/* * 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) { router.back(); }, false); document.addEventListener("deviceready", function () { app.statusbar.overlaysWebView(true); StatusBar.backgroundColorByHexString("#000000ff"); if (cordova.platformId == 'android') { //StatusBar.backgroundColorByHexString("#324150"); //StatusBar.styleLightContent(); } router.on("routeChange", function (newRoute, previousRoute, router) { if (newRoute.name == "home") { StatusBar.styleDefault(); } else { StatusBar.styleLightContent(); } }); }, 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, prompt: "Find a code", resultDisplayDuration: 0, disableSuccessBeep: true } ); } // When running on Android 8.0 (not 7.1.1, not 8.1, just 8.0), the statusbar // height is incorrectly set to 0px, causing the clock and icons to overlap // on the TerranQuest UI. document.addEventListener("deviceready", function () { if (device.platform == "Android" && device.version.startsWith("8.0") && getComputedStyle(document.documentElement).getPropertyValue('--f7-statusbar-height').startsWith("0")) { document.documentElement.style.setProperty('--f7-statusbar-height', '24px'); } }, false); } 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(''); 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; }); }