diff --git a/CHANGELOG.md b/CHANGELOG.md index 6981cfa..cc3948a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ # Tracman Server Changelog -###### v 0.7.6 +###### v 0.7.7 +#### v0.7.7 +* [#96](https://github.com/Tracman-org/Server/issues/96) Continue to update panorama after creating element + #### v0.7.6 * [#100](https://github.com/Tracman-org/Server/issues/100) Moved CSS out of webpack * Fixed [#108](https://github.com/Tracman-org/Server/issues/108) diff --git a/README.md b/README.md index a91ffcb..38f4eff 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # []Tracman -###### v 0.7.6 +###### v 0.7.7 node.js application to display a sharable map with user's location. @@ -31,7 +31,7 @@ Then edit `config/env/local-config.js` to match your local environment. Run Tracman with npm: ```sh -npm run minify && npm start +(npm run minify & npm run build) && npm start ``` ...or with [nodemon](https://nodemon.io/): @@ -40,7 +40,7 @@ npm run minify && npm start npm run nodemon ``` -Nodemon will automatically minify files and restart the app when you make changes. Check out the `nodemon.json` configuration. +Nodemon will automatically minify and bundle files and restart the app when you make changes. Check out the `nodemon.json` configuration. ## Contributing @@ -52,6 +52,9 @@ Tracman will be updated according to [this branching model](http://nvie.com/post [view full changelog](CHANGELOG.md) +#### v0.7.7 +* [#96](https://github.com/Tracman-org/Server/issues/96) Continue to update panorama after creating element + #### v0.7.6 * [#100](https://github.com/Tracman-org/Server/issues/100) Moved CSS out of webpack * Fixed [#108](https://github.com/Tracman-org/Server/issues/108) diff --git a/package-lock.json b/package-lock.json index 2ad4805..1b93594 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tracman", - "version": "0.7.5", + "version": "0.7.6", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -651,7 +651,6 @@ "requires": { "anymatch": "1.3.0", "async-each": "1.0.1", - "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -1193,12 +1192,12 @@ "dev": true }, "duplexify": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", - "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", "dev": true, "requires": { - "end-of-stream": "1.0.0", + "end-of-stream": "1.4.0", "inherits": "2.0.3", "readable-stream": "2.3.3", "stream-shift": "1.0.0" @@ -1257,23 +1256,12 @@ "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" }, "end-of-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", - "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { - "once": "1.3.3" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } + "once": "1.4.0" } }, "engine.io": { @@ -1707,791 +1695,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, "fstream": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", @@ -2608,7 +1811,7 @@ "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", "dev": true, "requires": { - "duplexify": "3.5.0", + "duplexify": "3.5.1", "infinity-agent": "2.0.3", "is-redirect": "1.0.0", "is-stream": "1.1.0", @@ -3699,12 +2902,6 @@ "resolved": "https://registry.npmjs.org/muri/-/muri-1.2.1.tgz", "integrity": "sha1-7H6lzmympSPrGrNbrNpfqBbJqjw=" }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "optional": true - }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", diff --git a/package.json b/package.json index 55e3134..cebafec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tracman", - "version": "0.7.6", + "version": "0.7.7", "description": "Tracks user's GPS location", "main": "server.js", "dependencies": { diff --git a/static/js/map.js b/static/js/map.js index 8a67800..ca6dc8a 100644 --- a/static/js/map.js +++ b/static/js/map.js @@ -50,100 +50,101 @@ $(function() { toggleMaps(mapuser.last); }); -// Load google maps +// Load google maps API loadGoogleMapsAPI({ key:mapKey }) .then( function(googlemaps) { - - // Create map - if (disp!=='1') { - - map = new googlemaps.Map( mapElem, { - center: new googlemaps.LatLng( mapuser.last.lat, mapuser.last.lon ), - panControl: false, - scaleControl: (mapuser.settings.showScale)?true:false, - draggable: false, - zoom: mapuser.settings.defaultZoom, - streetViewControl: false, - zoomControlOptions: {position: googlemaps.ControlPosition.LEFT_TOP}, - mapTypeId: (mapuser.settings.defaultMap=='road')?googlemaps.MapTypeId.ROADMAP:googlemaps.MapTypeId.HYBRID - }); - marker = new googlemaps.Marker({ - position: { lat:mapuser.last.lat, lng:mapuser.last.lon }, - title: mapuser.name, - icon: (mapuser.settings.marker)?'/static/img/marker/'+mapuser.settings.marker+'.png':'/static/img/marker/red.png', - map: map, - draggable: false - }); - map.addListener('zoom_changed',function(){ - map.setCenter(marker.getPosition()); - }); - - // Create iFrame logo - if (noHeader!=='0' && mapuser._id!=='demo') { - const logoDiv = document.createElement('div'); - logoDiv.id = 'map-logo'; - logoDiv.innerHTML = ''+ - '[]'+ - "Tracman"; - map.controls[googlemaps.ControlPosition.BOTTOM_LEFT].push(logoDiv); - } - - // Create update time block - const timeDiv = document.createElement('div'); - timeDiv.id = 'timestamp'; - if (mapuser.last.time) { - timeDiv.innerHTML = 'location updated '+new Date(mapuser.last.time).toLocaleString(); - } - map.controls[googlemaps.ControlPosition.RIGHT_BOTTOM].push(timeDiv); - - // Create speed block - if (mapuser.settings.showSpeed) { - const speedSign = document.createElement('div'), - speedLabel = document.createElement('div'), - speedText = document.createElement('div'), - speedUnit = document.createElement('div'); - speedLabel.id = 'spd-label'; - speedLabel.innerHTML = 'SPEED'; - speedText.id = 'spd'; - speedText.innerHTML = (mapuser.settings.units=='standard')?(parseFloat(mapuser.last.spd)*2.23694).toFixed():mapuser.last.spd.toFixed(); - speedUnit.id = 'spd-unit'; - speedUnit.innerHTML = (mapuser.settings.units=='standard')?'m.p.h.':'k.p.h.'; - speedSign.id = 'spd-sign'; - speedSign.appendChild(speedLabel); - speedSign.appendChild(speedText); - speedSign.appendChild(speedUnit); - map.controls[googlemaps.ControlPosition.TOP_RIGHT].push(speedSign); - } - - // Create altitude block - if (mapuser.settings.showAlt) { - const elevator = new googlemaps.ElevationService, - altitudeSign = document.createElement('div'), - altitudeLabel = document.createElement('div'), - altitudeText = document.createElement('div'), - altitudeUnit = document.createElement('div'); - altitudeLabel.id = 'alt-label'; - altitudeText.id = 'alt'; - altitudeUnit.id = 'alt-unit'; - altitudeSign.id = 'alt-sign'; - altitudeText.innerHTML = ''; - altitudeLabel.innerHTML = 'ALTITUDE'; - getAltitude(new googlemaps.LatLng(mapuser.last.lat,mapuser.last.lon), elevator, function(alt) { - if (alt) { altitudeText.innerHTML = (mapuser.settings.units=='standard')?(alt*3.28084).toFixed():alt.toFixed(); } - }); - altitudeUnit.innerHTML = (mapuser.settings.units=='standard')?'feet':'meters'; - altitudeSign.appendChild(altitudeLabel); - altitudeSign.appendChild(altitudeText); - altitudeSign.appendChild(altitudeUnit); - map.controls[googlemaps.ControlPosition.TOP_RIGHT].push(altitudeSign); - } - + + // Create map + if (disp!=='1') { + + // Create map and marker elements + map = new googlemaps.Map( mapElem, { + center: new googlemaps.LatLng( mapuser.last.lat, mapuser.last.lon ), + panControl: false, + scaleControl: (mapuser.settings.showScale)?true:false, + draggable: false, + zoom: mapuser.settings.defaultZoom, + streetViewControl: false, + zoomControlOptions: {position: googlemaps.ControlPosition.LEFT_TOP}, + mapTypeId: (mapuser.settings.defaultMap=='road')?googlemaps.MapTypeId.ROADMAP:googlemaps.MapTypeId.HYBRID + }); + marker = new googlemaps.Marker({ + position: { lat:mapuser.last.lat, lng:mapuser.last.lon }, + title: mapuser.name, + icon: (mapuser.settings.marker)?'/static/img/marker/'+mapuser.settings.marker+'.png':'/static/img/marker/red.png', + map: map, + draggable: false + }); + map.addListener('zoom_changed',function(){ + map.setCenter(marker.getPosition()); + }); + + // Create iFrame logo + if (noHeader!=='0' && mapuser._id!=='demo') { + const logoDiv = document.createElement('div'); + logoDiv.id = 'map-logo'; + logoDiv.innerHTML = ''+ + '[]'+ + "Tracman"; + map.controls[googlemaps.ControlPosition.BOTTOM_LEFT].push(logoDiv); } - - // Create streetview - if (disp!=='0' && mapuser.settings.showStreetview) { - updateStreetView(parseLoc(mapuser.last),10); + + // Create update time block + const timeDiv = document.createElement('div'); + timeDiv.id = 'timestamp'; + if (mapuser.last.time) { + timeDiv.innerHTML = 'location updated '+new Date(mapuser.last.time).toLocaleString(); } + map.controls[googlemaps.ControlPosition.RIGHT_BOTTOM].push(timeDiv); + + // Create speed block + if (mapuser.settings.showSpeed) { + const speedSign = document.createElement('div'), + speedLabel = document.createElement('div'), + speedText = document.createElement('div'), + speedUnit = document.createElement('div'); + speedLabel.id = 'spd-label'; + speedLabel.innerHTML = 'SPEED'; + speedText.id = 'spd'; + speedText.innerHTML = (mapuser.settings.units=='standard')?(parseFloat(mapuser.last.spd)*2.23694).toFixed():mapuser.last.spd.toFixed(); + speedUnit.id = 'spd-unit'; + speedUnit.innerHTML = (mapuser.settings.units=='standard')?'m.p.h.':'k.p.h.'; + speedSign.id = 'spd-sign'; + speedSign.appendChild(speedLabel); + speedSign.appendChild(speedText); + speedSign.appendChild(speedUnit); + map.controls[googlemaps.ControlPosition.TOP_RIGHT].push(speedSign); + } + + // Create altitude block + if (mapuser.settings.showAlt) { + const elevator = new googlemaps.ElevationService, + altitudeSign = document.createElement('div'), + altitudeLabel = document.createElement('div'), + altitudeText = document.createElement('div'), + altitudeUnit = document.createElement('div'); + altitudeLabel.id = 'alt-label'; + altitudeText.id = 'alt'; + altitudeUnit.id = 'alt-unit'; + altitudeSign.id = 'alt-sign'; + altitudeText.innerHTML = ''; + altitudeLabel.innerHTML = 'ALTITUDE'; + getAltitude(new googlemaps.LatLng(mapuser.last.lat,mapuser.last.lon), elevator, function(alt) { + if (alt) { altitudeText.innerHTML = (mapuser.settings.units=='standard')?(alt*3.28084).toFixed():alt.toFixed(); } + }); + altitudeUnit.innerHTML = (mapuser.settings.units=='standard')?'feet':'meters'; + altitudeSign.appendChild(altitudeLabel); + altitudeSign.appendChild(altitudeText); + altitudeSign.appendChild(altitudeUnit); + map.controls[googlemaps.ControlPosition.TOP_RIGHT].push(altitudeSign); + } + + } + + // Create streetview + if (disp!=='0' && mapuser.settings.showStreetview) { + updateStreetView(parseLoc(mapuser.last),10); + } // Parse location function parseLoc(loc) { @@ -265,12 +266,14 @@ loadGoogleMapsAPI({ key:mapKey }) } - // Not moving and pano not set (create panoramic image) - else if (pano==null) { + // Not moving + else { - // Create panorama - $('#pano').empty(); - pano = new googlemaps.StreetViewPanorama(panoElem, { + // Pano element not created + if (pano==null) { + // Create panorama + $('#pano').empty(); + pano = new googlemaps.StreetViewPanorama(panoElem, { panControl: false, zoomControl: false, addressControl: false, @@ -278,6 +281,7 @@ loadGoogleMapsAPI({ key:mapKey }) motionTracking: false, motionTrackingControl: false }); + } // Set panorama getStreetViewData(loc, 2, function(data){ @@ -288,10 +292,12 @@ loadGoogleMapsAPI({ key:mapKey }) heading: Math.atan((loc.lon-data.location.latLng.lng())/(loc.lat-data.location.latLng.lat()))*(180/Math.PI) }); }); + } } +// Error loading gmaps API }).catch( function(err) { console.error(err); }); diff --git a/views/pro.html b/views/pro.html index cecc37e..4202bcb 100644 --- a/views/pro.html +++ b/views/pro.html @@ -20,7 +20,7 @@

Glad you're enjoying my website and app. I made the whole thing, from front to backend, and I'm really proud of it! However, I'm a long-haul trucker by day and coding is just a hobby. I don't make any money off this website, and I pay the server fees out of my own pocket. Do you pity me enough to donate some money or bitcoin?

-

To make a little money off this service, I'm going to be offering a pro version with more features. It'll be cheap, probably $1 or $2 per month. While Tracman is in beta, you can test the pro version for free. Be sure to inform me about any bugs you encounter. And keep in mind that at some point, when we launch out of beta, Tracman Pro will not be free and you will lose your pro membership unless start paying for it.

+

To make a little money off this service, I'm going to be offering a pro version with more features. It'll be cheap, probably $5 per month. While Tracman is in beta, you can test the pro version for free. Be sure to inform me about any bugs you encounter. And keep in mind that at some point, when we launch out of beta, Tracman Pro will not be free and you will lose your pro membership unless start paying for it.

That said, just click the button below to try pro out.