/* 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 $$ = Dom7; var shown_notifications = []; var app = new Framework7({ root: "#app", name: "Netsyms", id: "com.netsyms.BusinessMobile", routes: routes, dialog: { buttonOK: "Dismiss" } }); var mainView = app.views.create('.view-main', { url: "/" }); var router = mainView.router; var loadingProgressDialog; /** * Thanks to https://stackoverflow.com/a/13542669 * @param {type} color * @param {type} percent * @returns {String} */ function shadeColor2(color, percent) { var f = parseInt(color.slice(1), 16), t = percent < 0 ? 0 : 255, p = percent < 0 ? percent * -1 : percent, R = f >> 16, G = f >> 8 & 0x00FF, B = f & 0x0000FF; return "#" + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1); } /** * Load the app.html view and open an app with nativeish Android UI elements * @param String id Application ID * @param String api Path to the mobile API * @param String url Base URL of the app * @param String icon URL to the app icon * @param String title Friendly app name * @param boolean injectcode (optional, default true) Whether or not to inject UI modification code into the app * @param boolean shownavbar (optional, default false) Whether or not to show the navbar at the top of the screen. * @returns {undefined} */ function openapp(id, api, url, icon, title, injectcode, shownavbar) { $('#content-zone').fadeOut(300, function () { $('#content-zone').load("views/app.html", function () { $('#content-zone').fadeIn(300, function () { launchapp(id, api, url, icon, title, injectcode, shownavbar); }); }); }); } function restartApplication() { navigator.splashscreen.show(); // We're doing the timeout so we don't run afoul of server-side rate limiting setTimeout(function () { window.location = "index.html"; }, 3000); } // Handle back button to close things document.addEventListener("backbutton", function (event) { if (isconfigvalid()) { if ($("#appframe").length && historyctr > 0) { console.log("going back"); var iframe = document.getElementById("appframe"); iframe.contentWindow.postMessage("goback", "*"); historyctr--; } else { if (cordova.platformId == 'android') { StatusBar.backgroundColorByHexString("#1976d2"); } else { StatusBar.backgroundColorByHexString("#2196f3"); } router.back(); } } else { router.back(); } }, false); document.addEventListener("deviceready", function () { if (cordova.platformId == 'android') { StatusBar.backgroundColorByHexString("#1976d2"); StatusBar.styleLightContent(); } if (isconfigvalid()) { loadingProgressDialog = app.dialog.progress('Loading...', 0); loadingProgressDialog.setText(''); loadingProgressDialog.setProgress(20); loadingProgressDialog.setText('Account'); getuserinfo(function () { loadingProgressDialog.setProgress(50); loadingProgressDialog.setText('Notifications'); // Setup notification sync initNotifications(); loadingProgressDialog.setProgress(60); // Load homepage/dashboard loadingProgressDialog.setText('Apps'); loadHomePage(false); }); } else { // Try to recover data from NativeStorage back to localStorage recoveraccounts(function (ok) { if (ok) { // Success, restart app to reload from localStorage restartApplication(); } else { // No account data found, open setup router.navigate({ name: 'setup0' }); } }) } setTimeout(navigator.splashscreen.hide, 500); }, false); router.on("pageBeforeIn", function (pagedata) { app.progressbar.hide(); }); router.on("pageInit", function (pagedata) { pagedata.$el.find('script').each(function (el) { if ($$(this).attr('src')) { var s = document.createElement('script'); s.src = $$(this).attr('src'); $$('head').append(s); } else { eval($$(this).text()); } }); app.progressbar.hide(); switch (pagedata.name) { case "settings": updateSettingsData(); break; } });