/* * 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 routes = [ { path: '/home', name: 'home', on: { pageBeforeIn: function () { // make sure it's not shown right after account setup var accountsetup = (inStorage("accountkey") && inStorage("phonenumber")); if (accountsetup) { $("#finishaccountsetupnag").css("display", "none"); } } }, async: function (routeTo, routeFrom, resolve, reject) { // Show a nag message if no account is set up var accountsetup = (inStorage("accountkey") && inStorage("phonenumber")); resolve({ templateUrl: './pages/home.html' }, { context: { accountsetup: accountsetup, pages: [ { title: "Drop and Send", href: "/dropandsend", icon: "fad fa-box-alt", text: "Bring your package to a secure drop location and we'll ship it for you. No postage or appointment needed." }, { title: "Book Appointment", href: "/appointment", icon: "fad fa-calendar-alt", text: "Get mailing, shipping, and notary services on your schedule anywhere in the Helena area." }, { title: "My Account", href: "/account", icon: "fad fa-user-circle", text: "Manage your Helena Express account and check rewards points balance." }, // { // title: "Track Package", // href: "/track", // icon: "fad fa-search", // text: "Find the latest location and updates about any shipment." // }, // { // title: "Get Rates", // href: "/rates", // icon: "fad fa-calculator", // text: "Calculate postage and prices for your item." // }, // { // title: "Express Pickup", // href: "/addresscode", // icon: "fal fa-qrcode", // text: "Get a faster pickup and a discount by pre-typing the destination address here." // }, // { // title: "Pick Up and Redeliver", // href: "/noticeslip", // icon: "fad fa-sticky-note", // text: "Take a picture of your pink postal notice slip and we'll go get your missed delivery." // } ] } }); } }, { path: '/appointment', name: 'appointment', async: function (routeTo, routeFrom, resolve, reject) { resolve({ templateUrl: './pages/appointment.html' }, { context: { services: [ { title: "Package Pickup", text: "A courier will come to you and ship your mail, packages, etc.", icon: "fad fa-hand-holding-box", serviceid: 19 }, { title: "Mobile Notary", text: "A notary public will come to you and notarize your documents.", icon: "fad fa-file-signature", serviceid: 21 } ] } }); }, routes: [ { path: "/:serviceId", async: function (routeTo, routeFrom, resolve, reject) { var url = SETTINGS.appointmenturl; if ($("#app").hasClass("theme-dark")) { url = SETTINGS.appointmenturl_darkmode; } resolve({ templateUrl: './pages/appointment.html' }, { context: { url: url + "&service=" + routeTo.params.serviceId } }); } } ] }, { path: '/dropandsend', name: 'dropandsend', templateUrl: './pages/dropandsend.html', on: { pageAfterIn: function () { var mapboxel = document.getElementById("mapbox-dropboxes"); dropboxMap = new MapControl(mapboxel, true); dropboxMap.reloadMap(); dropboxMap.mapObj.on('load', function () { dropboxMap.mapObj.jumpTo({center: [-112.005, 46.589], zoom: 8}); dropboxMap.loadIcon("./assets/images/dropbox-icon.png", "dropbox", function () { apirequest(SETTINGS.apis.dropandsendlocations, {}, function (data) { dropboxMap.loadMarkersFromGeoJson(data, "dropbox", "dropbox"); dropboxMap.mapObj.on('click', 'marker-layer-dropbox', function (e) { var coordinates = e.features[0].geometry.coordinates.slice(); var name = e.features[0].properties.name; var type = e.features[0].properties.type; var info = e.features[0].properties.info; var hours = e.features[0].properties.hours; var geolink = "geo:" + (Math.round(coordinates[1] * 1000000) / 1000000) + "," + (Math.round(coordinates[0] * 1000000) / 1000000); var typedesc = " Unknown package size limits"; switch (type) { case "micro": typedesc = " Fits envelopes"; break; case "mini": typedesc = " Fits large envelopes and small packages"; break; case "standard": typedesc = " Fits up to medium-size packages"; break; case "large": typedesc = " Fits most packages"; break; case "business": typedesc = " Shipping location, accepts any size package"; break; } while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) { coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360; } new mapboxgl.Popup() .setLngLat(coordinates) .setHTML("" + name + "
" + typedesc + "
Hours:
" + hours + "
More Info:
" + info + "
Directions") .addTo(dropboxMap.mapObj); }); dropboxMap.mapObj.on('mouseenter', 'marker-layer-dropbox', function () { dropboxMap.mapObj.getCanvas().style.cursor = 'pointer'; }); dropboxMap.mapObj.on('mouseleave', 'marker-layer-dropbox', function () { dropboxMap.mapObj.getCanvas().style.cursor = ''; }); dropboxMap.animateMapIn(46.589, -112.005, 9, 0); }, function (error) { }, "GET"); }); }); } } }, { path: '/track', url: './pages/track.html', name: 'track', on: { pageBeforeIn: function () { addTrackingSuggestions(); $("#trackingcode").val("0"); app.input.validate("#trackingcode"); $("#trackingcode").val(""); } } }, { path: '/rates', url: './pages/rates.html', name: 'rates', on: { pageAfterIn: function () { initRateForm(); } } }, { path: '/rateresult', name: 'rateresult', templateUrl: './pages/rateresult.html' }, { path: '/noticeslip', url: './pages/noticeslip.html', name: 'noticeslip', on: { pageAfterIn: function () { initNoticeSlipForm(); } } }, { path: '/noticeslip/success', name: 'noticeslipsuccess', templateUrl: './pages/noticeslipsuccess.html' }, { path: '/addresscode', name: 'addresscode', async: function (routeTo, routeFrom, resolve, reject) { resolve({ templateUrl: './pages/addresscode.html' }, { context: { fields: [ {label: "Name", id: "name"}, {label: "Company", id: "company"}, {label: "Street", id: "street1"}, {label: "Street (line 2)", id: "street2"}, {label: "City", id: "city"}, {label: "State", id: "state"}, {label: "ZIP", id: "zip"} ] } }); } }, { path: '/account', name: 'account', templateUrl: './pages/account.html', on: { pageAfterIn: function () { initAccountPage(); } }, routes: [ { path: '/managepayment', name: 'managepayment', templateUrl: './pages/managepayment.html' } ] }, { path: '/track/:code', name: 'trackresult', async: trackOpenAsync, on: { pageAfterIn: function () { var mapboxel = document.getElementById("mapbox-track"); var trackingMap = new MapControl(mapboxel, false); trackingMap.reloadMap(); var latitude = $(mapboxel).data("latitude"); var longitude = $(mapboxel).data("longitude"); var accurate = $(mapboxel).data("accurate") == true; trackingMap.clearMarkersAndCenterMapOnNewMarker("package-marker", latitude, longitude, accurate); } } }, { path: '/credits', url: './pages/credits.html', name: 'credits' }, { path: '/settings', name: 'settings', async: function (routeTo, routeFrom, resolve, reject) { var settings = []; settings.push( { setting: "display", title: "Display and Appearance", text: "", onclick: "router.navigate('/settings/display')", link: true } ); settings.push( { setting: "versions", title: "Helena Express app v" + app_version, text: "Copyright © 2019-2021 Netsyms Technologies.", onclick: "" }, { setting: "opensource", title: "Credits and open source info", text: "", onclick: "router.navigate('/credits')", link: true }, { setting: "privacy", title: "Privacy policy and legal", text: "", onclick: "openBrowser('https://netsyms.com/legal?mtm_campaign=HelenaExpressApp')", link: true }); resolve({ templateUrl: './pages/settings.html' }, { context: { page_title: "Settings", settings: settings } }); }, routes: [ { path: '/display', name: 'settings', async: function (routeTo, routeFrom, resolve, reject) { var settings = [ { setting: "apptheme", title: "Color theme", select: true, options: [ { value: "auto", label: "Auto", selected: getStorage("apptheme") == null || getStorage("apptheme") == "auto" }, { value: "dark", label: "Dark", selected: getStorage("apptheme") == "dark" }, { value: "light", label: "Light", selected: getStorage("apptheme") == "light" } ] }, { setting: "animation", title: "Animations", select: true, options: [ { value: "auto", label: "On", selected: getStorage("animation") == null || getStorage("animation") == "auto" || getStorage("animation") == "on" }, // { // value: "on", // label: "On", // selected: getStorage("animation") == "on" // }, { value: "off", label: "Off", selected: getStorage("animation") == "off" } ] } ]; resolve({ templateUrl: './pages/settings.html' }, { context: { page_title: "Display Settings", settings: settings } }); } } ] } ];