You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
4.8 KiB
JavaScript

/*
* Copyright 2020 Netsyms Technologies.
* 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 = "unknown";
var nw_tray = null;
/**
* If true and animations are set to "auto", animations should be disabled.
* @type Boolean
*/
var auto_disable_animations = false;
var openBrowser = function (url) {
window.open(url);
}
var openSystemBrowser = function (url) {
window.open(url);
}
var scanningBarcode = false;
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 getPlatformTheme() {
return "aurora";
if (Framework7.device.ios) {
return "ios";
} else if (Framework7.device.macos) {
// Apple is trending towards one OS for all their crap,
// let's be ahead of that curve
return "ios";
} else if (Framework7.device.nwjs) {
return "md";
} else if (Framework7.device.android) {
return "md";
} else if (Framework7.device.desktop) {
return "aurora";
}
return "md";
}
function initCordova() {
platform_type = "cordova";
// Handle back button to close things
document.addEventListener("backbutton", handleBackButton, false);
document.addEventListener("deviceready", function () {
// Make sure the status bar color is set properly
applyColorTheme();
}, false);
openBrowser = function (url) {
cordova.InAppBrowser.open(url, '_blank', 'location=yes');
}
openExternalBrowser = function (url) {
window.open(url, '_system', '');
}
// Handle geo: urls
$("#app").on("click", ".geolink", function (evt) {
window.open($(this).attr("href"), "_system");
evt.preventDefault();
});
}
function initNW() {
platform_type = "nw";
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);
}
// Handle geo: urls
$("#app").on("click", ".geolink", function (evt) {
require('nw.gui').Shell.openExternal($(this).attr("href"));
evt.preventDefault();
});
}
function initBrowser() {
platform_type = "browser";
openBrowser = function (url) {
window.open(url);
}
openExternalBrowser = function (url) {
window.open(url);
}
$("#app").on("click", ".geolink", function (evt) {
window.open($(this).attr("href"), "_blank");
evt.preventDefault();
});
}
function initPlatform() {
if (typeof cordova !== 'undefined') {
initCordova();
} else if (typeof nw !== 'undefined') {
initNW();
} else {
initBrowser();
}
platform_theme = getPlatformTheme();
$.getJSON("package.json", function (data) {
app_version = data.version;
});
}