diff --git a/.gitignore b/.gitignore index 1730615..03fe7a2 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,5 @@ Thumbs.db /server/node_modules/ /server/logs/ /server/build/ +server/.npmrc +.npmrc diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..6d907bf --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,31 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch server", + "request": "launch", + "cwd": "${workspaceFolder}/server", + "runtimeArgs": [ + "start" + ], + "runtimeExecutable": "npm", + "skipFiles": [ + "/**" + ], + "type": "node", + "envFile": "${workspaceFolder}/.vscode/.env" + }, + { + "name": "Launch client", + "request": "launch", + "runtimeArgs": [ + "start" + ], + "runtimeExecutable": "npm", + "skipFiles": [ + "/**" + ], + "type": "node" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 0ee9678..78bc4fd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,35 +11,66 @@ "Alnath", "Alphekka", "Alshain", + "Andromedae", "Ankaa", + "Antliae", + "Apodis", + "Aquarii", + "Aquilae", + "Arae", + "Arietis", "asynclist", "ATHF", "atlasdb", "ATOL", + "Aurigae", "Australe", + "Austrina", + "Austrinae", + "Austrini", "Austrinus", "autorepeat", "benight", "Berenices", "blockui", "browsable", + "Caeli", "callout", + "Cancri", "Canis", + "Canum", + "Capricorni", "Capricornus", "Caroli", + "Cassiopeiae", "cele", + "Cephei", + "Ceti", + "Chamaeleontis", + "Circini", "COLSPAN", + "Columbae", + "Comae", "confirmdialog", + "Corvi", + "Crateris", + "Crucis", "CTRS", + "Cygni", "datatable", + "Delphini", "Dheneb", "Diphda", "dismissable", + "Doradus", + "Draconis", "DSOS", "emptymessage", "eqci", "equisolstice", + "Equulei", "Equulues", + "Eridani", "espree", "Estado", "Etamin", @@ -48,43 +79,77 @@ "ffdx", "ffdy", "ffox", + "fontawesome", + "Fornacis", + "fortawesome", "GAST", + "Geminorum", "GEON", "geoname", "Geonames", "GEOZ", "googlemaps", "GRSCM", + "Gruis", "GTTY", "habs", + "Herculis", + "Horologii", "Horsehead", "hpos", + "Hydri", "ICND", "illum", + "Indi", "inputtext", "jasminewd", "Jupiters", "Kaus", "Kocab", + "Lacertae", "latlong", + "Leonis", + "Leporis", + "Librae", + "Lupi", + "Lyncis", + "Lyrae", + "Majoris", + "Mensae", "Merach", "metaphone", + "Microscopii", "MILB", + "Minoris", "Mirac", "Mirak", "Mirphak", + "Monocerotis", "MOONSHADE", "moremenu", "mphone", + "Muscae", "Nihal", + "Nipigon", "nonneg", "NONPLANET", + "Normae", "notrace", + "Octantis", + "Ophiuchi", + "Orionis", "overlaypanel", "Parallactically", + "Pavonis", + "Pegasi", + "Persei", "Phad", + "Phoenicis", "Phong", + "Pices", + "Pictoris", "Piscis", + "Piscium", "postalcode", "PPLA", "PPLC", @@ -99,12 +164,21 @@ "primeicons", "primeng", "pxperrad", + "Pyxidis", "radiobutton", "rdpartylicenses", + "Reticuli", "Sadalmelik", + "Sagittae", + "Sagittarii", + "Scorpii", "sctr", + "Sculptoris", + "Scuti", "semidiameter", + "Serpentis", "Servlet", + "Sextantis", "Shedir", "skyview", "skyviewcafe", @@ -118,20 +192,31 @@ "subzone", "subzones", "tabview", + "Telescopii", "timeservices", "TIMESTAMPDIFF", "topocentric", + "Trianguli", + "Tucanae", + "tzid", "unidecode", "VADJ", + "Velorum", "Venatici", + "Venaticorum", + "Virginis", "vmag", + "Volantis", "vpos", + "Vulpeculae", "worldmap", + "xclick", "xctr", "xsign", "yctr", "ysign", "zoneloc", + "zonemap", "ΔTAI" ] -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2fca176..f349002 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "svc-ng", - "version": "1.16.0", + "version": "1.16.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "svc-ng", - "version": "1.16.0", + "version": "1.16.1", "license": "MIT AND GPL-3.0-or-later", "dependencies": { "@angular/animations": "^14.0.6", @@ -22,7 +22,7 @@ "@tubular/array-buffer-reader": "^3.0.2", "@tubular/astronomy": "^3.3.0", "@tubular/math": "^3.1.0", - "@tubular/ng-widgets": "^2.2.0", + "@tubular/ng-widgets": "^2.2.1", "@tubular/time": "^3.8.3", "@tubular/util": "^4.12.0", "core-js": "^2.6.12", @@ -2841,9 +2841,9 @@ } }, "node_modules/@tubular/ng-widgets": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@tubular/ng-widgets/-/ng-widgets-2.2.0.tgz", - "integrity": "sha512-dSIC+1dhJNTKVkV1o+CDGoAroVK+fKIToRDUruY6r4Sb5L362gveqK7ys8R6f+N5mRSjEkr7y/mRaHt5+Nkk0w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@tubular/ng-widgets/-/ng-widgets-2.2.1.tgz", + "integrity": "sha512-Y+wnUSCDl/EgTAk4E9bLh16f7u+OfxCso3T3gwwymaMDpcrV92ZHJMEySVdwbbvi1pXCEct0i4ZLE6pfjfrZUg==", "dependencies": { "tslib": "^2.1.0" }, @@ -4413,6 +4413,16 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -14552,6 +14562,81 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "peer": true + }, + "node_modules/tslint/node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "peer": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -17467,9 +17552,9 @@ "integrity": "sha512-a7loxb8zHLxhq3mMSZbro2JNMxR2Vf8DoRy762RNCUKx3Ifd/pB024MVKsDF/5CVywdS5SvhavVtLtmpMRkmPQ==" }, "@tubular/ng-widgets": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@tubular/ng-widgets/-/ng-widgets-2.2.0.tgz", - "integrity": "sha512-dSIC+1dhJNTKVkV1o+CDGoAroVK+fKIToRDUruY6r4Sb5L362gveqK7ys8R6f+N5mRSjEkr7y/mRaHt5+Nkk0w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@tubular/ng-widgets/-/ng-widgets-2.2.1.tgz", + "integrity": "sha512-Y+wnUSCDl/EgTAk4E9bLh16f7u+OfxCso3T3gwwymaMDpcrV92ZHJMEySVdwbbvi1pXCEct0i4ZLE6pfjfrZUg==", "requires": { "tslib": "^2.1.0" } @@ -18701,6 +18786,13 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "peer": true + }, "builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -26240,6 +26332,64 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, + "tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "peer": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "peer": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "peer": true + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "peer": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, "tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", diff --git a/package.json b/package.json index e54f497..5e14539 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "svc-ng", - "version": "1.16.0", + "version": "1.16.1", "license": "MIT AND GPL-3.0-or-later", "author": "Kerry Shetline ", "scripts": { @@ -27,7 +27,7 @@ "@tubular/array-buffer-reader": "^3.0.2", "@tubular/astronomy": "^3.3.0", "@tubular/math": "^3.1.0", - "@tubular/ng-widgets": "^2.2.0", + "@tubular/ng-widgets": "^2.2.1", "@tubular/time": "^3.8.3", "@tubular/util": "^4.12.0", "core-js": "^2.6.12", diff --git a/server/app/atlas-database.ts b/server/app/atlas-database.ts index 5493587..29f1190 100644 --- a/server/app/atlas-database.ts +++ b/server/app/atlas-database.ts @@ -8,11 +8,11 @@ import { import { AtlasLocation } from './atlas-location'; import { MIN_EXTERNAL_SOURCE } from './common'; import { svcApiConsole } from './svc-api-logger'; -import { isAllUppercaseWords, toBoolean, toMixedCase } from '@tubular/util'; +import { isAllUppercaseWords, toMixedCase } from '@tubular/util'; export const pool = new Pool({ - host: (toBoolean(process.env.DB_REMOTE) ? 'skyviewcafe.com' : '127.0.0.1'), - user: 'skyview', + host: process.env.DB_HOST || '127.0.0.1', + user: process.env.DB_USER, password: process.env.DB_PWD, database: 'skyviewcafe' }); @@ -366,8 +366,8 @@ export async function doDataBaseSearch(connection: PoolConnection, parsed: Parse if (numericState && abbr) location.state = abbr; else - location.state = (admin1ToNameByLang[key] || {})[lang || 'en'] || (admin1ToNameByLang[key] || {})[''] || - admin1s[key] || location.state; + location.state = (admin1ToNameByLang[key] || {})[lang || 'en'] || admin1s[key] || + (admin1ToNameByLang[key] || {})[''] || location.state; } if (matchType === MatchType.EXACT_MATCH_ALT) diff --git a/server/app/zone-for-location.ts b/server/app/zone-for-location.ts index ea602df..792d095 100644 --- a/server/app/zone-for-location.ts +++ b/server/app/zone-for-location.ts @@ -6,7 +6,7 @@ import { pool } from './atlas-database'; import { code2ToCode3 } from './gazetteer'; import { PoolConnection } from './mysql-await-async'; import { Timezone } from '@tubular/time'; -import { find } from 'geo-tz'; +import { find } from '@tubular/geo-tz'; import booleanPointInPolygon from '@turf/boolean-point-in-polygon'; export const router = Router(); diff --git a/server/package-lock.json b/server/package-lock.json index 7e47bf8..8b617fd 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,14 +1,15 @@ { "name": "svc-api", - "version": "1.10.1", + "version": "1.10.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "svc-api", - "version": "1.10.1", + "version": "1.10.2", "license": "MIT", "dependencies": { + "@tubular/geo-tz": "^7.1.0", "@tubular/math": "^3.1.0", "@tubular/time": "^3.8.2", "@tubular/util": "^4.11.0", @@ -19,7 +20,6 @@ "emitter": "0.0.2", "express": "^4.17.3", "follow-redirects": "^1.14.9", - "geo-tz": "^7.0.2", "html-entities": "^2.3.3", "iconv-lite": "^0.6.3", "lodash": "^4.17.21", @@ -335,6 +335,20 @@ "node": ">=6" } }, + "node_modules/@tubular/geo-tz": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@tubular/geo-tz/-/geo-tz-7.1.0.tgz", + "integrity": "sha512-nC3EUnGBWY1xFdbWmpcE/czksv0AGFJXunO9KV71H4IzCNP6mzqz7ULWH0cfiTXsoGc2UZdXEqcXd5Q4BV9WQQ==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^6.5.0", + "@turf/helpers": "^6.5.0", + "geobuf": "^3.0.2", + "pbf": "^3.2.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@tubular/math": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@tubular/math/-/math-3.1.0.tgz", @@ -2839,20 +2853,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/geo-tz": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/geo-tz/-/geo-tz-7.0.2.tgz", - "integrity": "sha512-H/loC6hQCSsns7VOrk8dIaHXtE0LzI/+239enbTrFYpWcM0DQxdBopKgnijC1yYXtiz5PDALdYAwTs1rgG2aiQ==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "geobuf": "^3.0.2", - "pbf": "^3.2.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/geobuf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/geobuf/-/geobuf-3.0.2.tgz", @@ -6256,6 +6256,17 @@ "defer-to-connect": "^1.0.1" } }, + "@tubular/geo-tz": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@tubular/geo-tz/-/geo-tz-7.1.0.tgz", + "integrity": "sha512-nC3EUnGBWY1xFdbWmpcE/czksv0AGFJXunO9KV71H4IzCNP6mzqz7ULWH0cfiTXsoGc2UZdXEqcXd5Q4BV9WQQ==", + "requires": { + "@turf/boolean-point-in-polygon": "^6.5.0", + "@turf/helpers": "^6.5.0", + "geobuf": "^3.0.2", + "pbf": "^3.2.1" + } + }, "@tubular/math": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@tubular/math/-/math-3.1.0.tgz", @@ -8166,17 +8177,6 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, - "geo-tz": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/geo-tz/-/geo-tz-7.0.2.tgz", - "integrity": "sha512-H/loC6hQCSsns7VOrk8dIaHXtE0LzI/+239enbTrFYpWcM0DQxdBopKgnijC1yYXtiz5PDALdYAwTs1rgG2aiQ==", - "requires": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "geobuf": "^3.0.2", - "pbf": "^3.2.1" - } - }, "geobuf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/geobuf/-/geobuf-3.0.2.tgz", diff --git a/server/package.json b/server/package.json index 0209b35..2052f33 100644 --- a/server/package.json +++ b/server/package.json @@ -1,13 +1,13 @@ { "name": "svc-api", - "version": "1.10.1", + "version": "1.10.2", "description": "SVC API", "main": "app.js", "private": true, "scripts": { "tsc": "tsc", "dev": "ts-node-dev --respawn --transpile-only ./app/app.ts", - "build": "rimraf dist && webpack && copyfiles -u 1 \"./app/data/*\" \"./dist\" && (chmod +x ./dist/app.js || echo \"\")", + "build": "rimraf dist && webpack && copyfiles -u 1 \"./app/data/*\" \"./dist\" && copyfiles -u 3 \"./node_modules/@tubular/geo-tz/data/geo.dat\" \"./dist\" && (chmod +x ./dist/app.js || echo \"\")", "start": "tsc && node -r dotenv/config dist/app.js", "lint": "eslint \"**/*.ts\"" }, @@ -24,7 +24,7 @@ "emitter": "0.0.2", "express": "^4.17.3", "follow-redirects": "^1.14.9", - "geo-tz": "^7.0.2", + "@tubular/geo-tz": "^7.1.0", "html-entities": "^2.3.3", "iconv-lite": "^0.6.3", "lodash": "^4.17.21", diff --git a/src/app/app.component.html b/src/app/app.component.html index 10072e6..81d238c 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -4,7 +4,7 @@
lunar eclipse

Sky View Café NP

- Version 1.16.0

+ Version 1.16.1

Copyright © 2016-2022 Kerry Shetline.
diff --git a/src/app/svc/generic-planetary-view.directive.ts b/src/app/svc/generic-planetary-view.directive.ts index 25b9d2a..ae575a6 100644 --- a/src/app/svc/generic-planetary-view.directive.ts +++ b/src/app/svc/generic-planetary-view.directive.ts @@ -17,9 +17,9 @@ export interface SortablePlanet { pos: SphericalPosition3D; } -export enum LABEL_CLASS {MINOR, STAR_OR_PLANET, CONSTELLATION} -export enum LABEL_TYPE {STAR, DSO, PLANET, CONSTELLATION, SOLE_CONSTELLATION, MOON, HIDDEN_MOON} -export enum SELECTION_TYPE {NONE, STAR, PLANET, DSO, MOON, MOON_SHADOW, CONSTELLATION, PRIORITY_DSO} +export enum LABEL_CLASS { MINOR, STAR_OR_PLANET, CONSTELLATION } +export enum LABEL_TYPE { STAR, DSO, PLANET, CONSTELLATION, SOLE_CONSTELLATION, MOON, HIDDEN_MOON } +export enum SELECTION_TYPE { NONE, STAR, PLANET, DSO, MOON, MOON_SHADOW, CONSTELLATION, PRIORITY_DSO } export interface LabelInfo { name: string; @@ -116,7 +116,7 @@ export interface DrawingContextPlanetary extends DrawingContext { starLevelRange: number; } -export enum NONPLANET {DEFAULT = -1, CONSTELLATIONS = -2, STARS = -3, MOONSHADE = -4} +export enum NONPLANET { DEFAULT = -1, CONSTELLATIONS = -2, STARS = -3, MOONSHADE = -4 } export type SUBJECT = NONPLANET | number; export const OUTER_LABEL_GAP = 2; const STAR_LABEL_GAP = 3; diff --git a/src/app/svc/generic-view.directive.ts b/src/app/svc/generic-view.directive.ts index f96a821..24712a6 100644 --- a/src/app/svc/generic-view.directive.ts +++ b/src/app/svc/generic-view.directive.ts @@ -14,7 +14,7 @@ import { getXYForTouchEvent } from '../util/ks-touch-events'; import { KsMarqueeComponent } from '../widgets/ks-marquee/ks-marquee.component'; export const PROPERTY_ADDITIONALS = 'additionals'; -export enum ADDITIONALS {NONE, ALL_ASTEROIDS, ALL_COMETS, ALL} +export enum ADDITIONALS { NONE, ALL_ASTEROIDS, ALL_COMETS, ALL } const FLICK_REJECTION_THRESHOLD = 250; const SLOW_DRAWING_THRESHOLD = 125; diff --git a/src/app/svc/svc-insolation-view/svc-insolation-view.component.ts b/src/app/svc/svc-insolation-view/svc-insolation-view.component.ts index 0adf06a..555364a 100644 --- a/src/app/svc/svc-insolation-view/svc-insolation-view.component.ts +++ b/src/app/svc/svc-insolation-view/svc-insolation-view.component.ts @@ -19,7 +19,7 @@ const MARK_LENGTH = 5; const ABBR_MONTH_NAMES = ['', 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']; -const enum RefreshMode {NEVER_REFRESH, REFRESH_ON_CHANGED_YEAR, ALWAYS_REFRESH} +const enum RefreshMode { NEVER_REFRESH, REFRESH_ON_CHANGED_YEAR, ALWAYS_REFRESH } const crosshairColor = 'green'; const crosshairOutlineColor = 'white'; diff --git a/src/app/svc/svc-location-settings/svc-location-settings.component.ts b/src/app/svc/svc-location-settings/svc-location-settings.component.ts index 8af136a..57aba24 100644 --- a/src/app/svc/svc-location-settings/svc-location-settings.component.ts +++ b/src/app/svc/svc-location-settings/svc-location-settings.component.ts @@ -46,9 +46,9 @@ export class SvcLocationSettingsComponent { get latitudeStyle(): AngleEditorOptions { if (this.app.latLongStyle === LatLongStyle.DEGREES_AND_MINUTES) - return { angleStyle: AngleStyle.DD_MM, compass: true }; + return { angleStyle: AngleStyle.DD_MM, compass: true, copyDecimal: true }; else - return { angleStyle: AngleStyle.DD, decimalPrecision: 2, compass: true }; + return { angleStyle: AngleStyle.DD, decimalPrecision: 2, compass: true, copyDecimal: true }; } get latitude(): number { return this.app.latitude; } @@ -59,9 +59,9 @@ export class SvcLocationSettingsComponent { get longitudeStyle(): AngleEditorOptions { if (this.app.latLongStyle === LatLongStyle.DEGREES_AND_MINUTES) - return { angleStyle: AngleStyle.DDD_MM, compass: true }; + return { angleStyle: AngleStyle.DDD_MM, compass: true, copyDecimal: true }; else - return { angleStyle: AngleStyle.DDD, decimalPrecision: 2, compass: true }; + return { angleStyle: AngleStyle.DDD, decimalPrecision: 2, compass: true, copyDecimal: true }; } get longitude(): number { return this.app.longitude; } diff --git a/src/app/svc/svc-map-view/svc-map-view.component.ts b/src/app/svc/svc-map-view/svc-map-view.component.ts index f5a06fc..8ceaeb3 100644 --- a/src/app/svc/svc-map-view/svc-map-view.component.ts +++ b/src/app/svc/svc-map-view/svc-map-view.component.ts @@ -22,7 +22,7 @@ export const EVENT_MAP_GO_TO_ECLIPSE_CENTER = 'event_map_go_to_eclipse_center'; export const EVENT_MAP_ACTIVE_ECLIPSE = 'event_map_active_eclipse'; export const EVENT_MAP_ACTIVE_ECLIPSE_REQUEST = 'event_map_active_eclipse_request'; -export enum MapType {TERRAIN, POLITICAL} +export enum MapType { TERRAIN, POLITICAL } const MIN_ECLIPSE_MAGNITUDE = 0.8; // Portion of full eclipse (1.0) const MIN_SEARCH_MAGNITUDE = 0.9; // Portion of full eclipse (1.0) diff --git a/src/app/svc/svc-sky-view/svc-sky-view.component.ts b/src/app/svc/svc-sky-view/svc-sky-view.component.ts index b69fddf..eec84aa 100644 --- a/src/app/svc/svc-sky-view/svc-sky-view.component.ts +++ b/src/app/svc/svc-sky-view/svc-sky-view.component.ts @@ -25,13 +25,13 @@ import { MoonDrawer } from '../moon-drawer'; export const VIEW_SKY = 'sky'; export const PROPERTY_VIEW_TYPE = 'view_type'; -export enum VIEW_TYPE {FULL_SKY_FLAT, FULL_SKY_DOME, - HORIZON_45, HORIZON_90, HORIZON_120, HORIZON_TO_ZENITH, - ZENITH_100, - MOON_CLOSEUP_2, MOON_CLOSEUP_4, MOON_CLOSEUP_8, MOON_CLOSEUP_16, - SUN_CLOSEUP_2, SUN_CLOSEUP_4, SUN_CLOSEUP_8, SUN_CLOSEUP_16} +export enum VIEW_TYPE { FULL_SKY_FLAT, FULL_SKY_DOME, + HORIZON_45, HORIZON_90, HORIZON_120, HORIZON_TO_ZENITH, + ZENITH_100, + MOON_CLOSEUP_2, MOON_CLOSEUP_4, MOON_CLOSEUP_8, MOON_CLOSEUP_16, + SUN_CLOSEUP_2, SUN_CLOSEUP_4, SUN_CLOSEUP_8, SUN_CLOSEUP_16 } export const PROPERTY_SKY_COLOR = 'sky_color'; -export enum SKY_COLOR {BLACK, BASIC, MULTI} +export enum SKY_COLOR { BLACK, BASIC, MULTI } export const PROPERTY_REFRACTION = 'refraction'; export const PROPERTY_CELESTIAL_GRID = 'celestial_grid'; export const PROPERTY_ECLIPTIC_GRID = 'ecliptic_grid'; @@ -50,7 +50,7 @@ export const PROPERTY_FACING = 'facing'; export const PROPERTY_TRACK_SUN = 'track_sun'; export const PROPERTY_PARALLEL_TO_ECLIPTIC = 'parallel_to_ecliptic'; -enum VIEW_MODE {FULL_SKY, HORIZON, ZENITH, MOON_CLOSEUP, SUN_CLOSEUP} +enum VIEW_MODE { FULL_SKY, HORIZON, ZENITH, MOON_CLOSEUP, SUN_CLOSEUP } const COMPASS_POINTS = ['S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE']; diff --git a/src/app/svc/svc-table-view/svc-table-view.component.ts b/src/app/svc/svc-table-view/svc-table-view.component.ts index 41978f7..64d1b76 100644 --- a/src/app/svc/svc-table-view/svc-table-view.component.ts +++ b/src/app/svc/svc-table-view/svc-table-view.component.ts @@ -9,7 +9,7 @@ import { SelectItem } from 'primeng/api'; import { AppService, CurrentTab, Location, UserSetting } from '../../app.service'; import { AstroDataService } from '../../astronomy/astro-data.service'; -export enum TableType {NONE, EPHEMERIS, EPHEMERIS_TBD, RISE_SET_TIMES, LUNAR_PHASES, EQUINOX_SOLSTICE, GALILEAN_MOONS} +export enum TableType { NONE, EPHEMERIS, EPHEMERIS_TBD, RISE_SET_TIMES, LUNAR_PHASES, EQUINOX_SOLSTICE, GALILEAN_MOONS } export const VIEW_TABLES = 'tables'; export const PROPERTY_PLANET_CHOICE = 'planet_choice'; diff --git a/src/app/util/ks-z-buffer.ts b/src/app/util/ks-z-buffer.ts index 1e87e70..e5dbfc9 100644 --- a/src/app/util/ks-z-buffer.ts +++ b/src/app/util/ks-z-buffer.ts @@ -1,7 +1,7 @@ import { strokeCircle, strokeLine } from '@tubular/util'; import sortBy from 'lodash-es/sortBy'; -enum DrawAction {FILLED_RECT, LINE, CIRCLE, RECT} +enum DrawAction { FILLED_RECT, LINE, CIRCLE, RECT } interface ZBufferItem { action: DrawAction; diff --git a/src/assets/about.html b/src/assets/about.html index 26b6134..7ec84ce 100644 --- a/src/assets/about.html +++ b/src/assets/about.html @@ -84,6 +84,9 @@

What's New / Version History

+

1.16.1 2022-07-20: Fixed possible copy-to-clipboard bug for latitude/longitude. + Updated/replaced/removed a number of expired web links in this site’s documentation.

+

1.16.0 2022-07-17: Map option for timezone overlay.

1.15.4 2022-07-07: Fix bug filling in timezone selector with initial timezone.

diff --git a/src/assets/donate.html b/src/assets/donate.html index 886f517..73da1b0 100644 --- a/src/assets/donate.html +++ b/src/assets/donate.html @@ -5,9 +5,9 @@ Sky View Café - Donations diff --git a/src/assets/help/bayer_flamsteed.html b/src/assets/help/bayer_flamsteed.html index 9c51715..ba46c4a 100644 --- a/src/assets/help/bayer_flamsteed.html +++ b/src/assets/help/bayer_flamsteed.html @@ -5,12 +5,22 @@ Bayer-Flamsteed Designations - - -

Bayer-Flamsteed Designations

+ +

Bayer-Flamsteed Designations

When you point at a star in Sky View Café, often you'll see a code like "37 Gam Cyg", "19 Bet Ori" or "6 Alp-2 Cap" in the marquee. This is a shorthand notation for the @@ -68,11 +84,11 @@ Without getting deeply into the intricacies of Latin grammar, when you read this style of star designation, you use the "genitive" form of the constellation name. For example the brightest star in the constellation Lyra, Vega, also goes by the designation "3 Alp Lyr", read "three alpha -Lyrae". [back]

+Lyrae". [back]

+
- -
+
+ -
@@ -99,7 +115,7 @@
Abbrev.SymbolName
Alpαalpha
Betβbeta
Psiψpsi
Omeωomega
+ -
@@ -146,7 +162,7 @@
Abbrev.ConstellationGenitive Form
AndAndromedaAndromedae
AntAntliaAntliae
HyiHydrusHydri
IndIndusIndi
+ - +
@@ -197,10 +213,8 @@
*Both Serpens Caput and Serpens Cauda.


-
Abbrev.ConstellationGenitive Form
LacLacertaLacertae
LeoLeoLeonis
- -
BACK TO MAIN HELP PAGE
-
+BACK TO MAIN HELP PAGE
+
diff --git a/src/assets/help/index.html b/src/assets/help/index.html index ca169e4..4192f5e 100644 --- a/src/assets/help/index.html +++ b/src/assets/help/index.html @@ -7,9 +7,37 @@ - -SVC Banner +
+SVC Banner
  • Getting Started
  • Setting the Time
  • @@ -138,7 +170,7 @@

    Only Time Will Tell

    Alternatively, you can click on the calendar icon and choose a date from the pop-up calendar. Hours and minutes will still have to be set separately.

    -
    calendar pop-up
    +calendar pop-up

    SVC uses the convention of marking times during Daylight Saving Time (DST) with the § symbol. 21:40§ means the same thing as 9:40 PM DST, which is the same as 8:40 PM Standard Time (ST). For those rare cases where DST isn't an exact one hour change from ST, ^ signifies a half-hour DST adjustment, and # signifies a two-hour change. There is even negative DST, indicated using the symbol, for when summer time is considered Standard Time and clocks are turned back to DST instead of forward to DST. Any other positive DST is marked using the ~ symbol.

    @@ -150,7 +182,7 @@

    In the Zone

    SVC defaults to using the same timezone setting that your computer is set up with. If you'd like to use a different timezone, however, you can select the zone by using the timezone region/category and specific timezone menus (see the Location Settings panel below). Most of the available timezones relate to a key city (like Europe/Paris), but some are general regions (such as US/Central) and some are simple fixed hour offsets from Universal Time.

    -

    These timezones come from the tz database, also known as the zoneinfo database or Olson database. This timezone system automatically takes care of Daylight Saving Time where applicable. Going back to 1970, and in some cases much further, historical changes in timezones and rules for DST are also included. Current DST rules are projected forward as far as the year 2500, after which all times are reckoned in Standard Time.

    +

    These timezones come from the tz database, also known as the zoneinfo database or Olson database. This timezone system automatically takes care of Daylight Saving Time where applicable. Going back to 1970, and in some cases much further, historical changes in timezones and rules for DST are also included. Current DST rules are projected forward as far as the year 2500, after which all times are reckoned in Standard Time.

    At a small expense to historical accuracy the timezone data has been modified for a few timezones to eliminate what might be called "calendar rollback" — moments in time when not only is the clock turned backward, but the calendar date as well. For example, using the America/Phoenix timezone in its original form, on New Year's Eve of 1943, when midnight is reached the date becomes 1944 for just a single minute. After that, the clock and the calendar turn back to 1943 for 59 minutes. Only after that does it then finally become 1944 again for good. As this sort of thing can be very confusing for mapping astronomical events into dates on calendars and in tables, SVC modifies this America/Phoenix transition by one minute so that 1944 never bounces back to 1943.

    @@ -174,7 +206,7 @@

    Location, Location, Location

City, abbreviated Canadian province
City, Country
City, abbreviated Country
 US ZIP Code - no city, no state
 ZIP code/postal code - no city, no state, or country
 Partial city - matches "Greenway", "Greenwich", etc.
 Geographic features (a few such features are available)
@@ -269,7 +301,7 @@

Signs in the Heavens


More Than One Way of Looking at Things

-
Sky View Tabs
+Sky View Tabs

SVC has a number of different viewing modes which you can access by clicking on the various tabs you see above.

@@ -315,12 +347,12 @@

Ecliptic View

occasionally occur within the Arctic or Antarctic circles (where the ecliptic can run along the horizon) you'll never see more than half of the ecliptic at the same time. The Ecliptic view, where you get to see the full ecliptic at a glance, is much more of an abstraction than a realistic representation of the sky compared to what you see with the various Sky view options.

-
Ecliptic view formation diagram
+
Ecliptic view formation diagram
-
Imagine the Earth at the center of a sphere surrounding the Earth at a great distance, with the stars and planets projected upon the sphere's surface. The green line represents the ecliptic, and the blue and red lines represent circles some distance north and south of the ecliptic. This band of the celestial sphere is what SVC shows in the Ecliptic view, removed from the whole of the celestial sphere and flattened out as shown in the illustration above.
+
-

SVC draws a dark green line to represent where your local horizon intersects the ecliptic band, along with a dotted green line showing the portion of the band which is above the horizon. The dark blue grid lines show geocentric latitude in steps of 5°, and geocentric longitude in steps of 15°. (For a more complete explanation of celestial and ecliptic coordinates, see Sky and Telescopes's Understanding Celestial Coordinates.)

+

SVC draws a dark green line to represent where your local horizon intersects the ecliptic band, along with a dotted green line showing the portion of the band which is above the horizon. The dark blue grid lines show geocentric latitude in steps of 5°, and geocentric longitude in steps of 15°. (For a more complete explanation of celestial and ecliptic coordinates, see Sky and Telescopes's Right Ascension & Declination: Celestial Coordinates for Beginners.)

Using animation with the Ecliptic view is a great way to see the motions of the planets against the background of the stars, and to see events like retrograde motion, maximum elongations, and conjunctions and oppositions of the planets. Switch off Show Local Horizon for faster animation, and when the background of the stars is not desired, switching off Show Stars will give an even greater boost to animation performance.

@@ -337,20 +369,20 @@

Orbits View

Moons/GRS View

-

The Moons/GRS view shows the four major moons of Jupiter (often referred to as the Galilean moons, after Galileo Galilei, who discovered them), Jupiter's Great Red Spot (GRS), and eight of the moons of Saturn. The image of Saturn also displays the orientation of the rings of Saturn as seen from Earth.

+

The Moons/GRS view shows the four major moons of Jupiter (often referred to as the Galilean moons, after Galileo Galilei, who discovered them), Jupiter's Great Red Spot (GRS), and eight of the moons of Saturn. The image of Saturn also displays the orientation of the rings of Saturn as seen from Earth.

The default view shows planetary north at the top of the view, and celestial east to the left. Checking and unchecking the North on top and Celestial east on left checkboxes in the Options panel can help you match the displayed view to what you might see using binoculars or various kinds of telescopes. When only one of the two checkboxes is checked, the image shown is a mirror image (as seen in many telescopes). When both checkboxes are on, or both are off, the image is a direct image. The Zoom In and Zoom Out buttons allow you to select differing levels of magnification.

-

The Photographic planets option is mostly decorative — the images shown shouldn't be taken too literally as accurate depictions of Jupiter and Saturn at any particular moment in time. Both planets are essentially gigantic balls of swirling gas, and Jupiter in particular undergoes a great deal of change in appearance as various atmospheric phenomena change dynamically over time. Both planets also undergo differential rotation, meaning that different parts rotate at different speeds. SVC makes no attempt to model or display any of this behavior.

+

The Photographic planets option is mostly decorative — the images shown shouldn't be taken too literally as accurate depictions of Jupiter and Saturn at any particular moment in time. Both planets are essentially gigantic balls of swirling gas, and Jupiter in particular undergoes a great deal of change in appearance as various atmospheric phenomena change dynamically over time. Both planets also undergo differential rotation, meaning that different parts rotate at different speeds. SVC makes no attempt to model or display any of this behavior.

An effort is made to show Jupiter's Great Red Spot in an approximately correct position. It should be noted, however, that the GRS is simply a great big storm — it is weather. While much more stable and much longer lasting than any storm on Earth (the GRS has been raging for close to 200 years at a minimum, perhaps even for 300 years or more), the behavior of the GRS is erratic and ultimately unpredictable. It's possible, perhaps even likely, that one these days the Great Red Spot will simply disappear.

-

Derived from data which can be found at jupos.org, SVC contains a table of GRS longitudes covering the time span (as of the moment that I'm writing this) from April 1969 to +

Derived from data which can be found at JUPOS, SVC contains a table of GRS longitudes covering the time span (as of the moment that I'm writing this) from April 1969 to January 2017. These longitudes are based on curve fitting numerous individual telescopic observations of the GRS. During the time span covered by this table, and for a short period of time before and after the tabular data, SVC's positioning of the GRS should be (I must emphasize that I'm not totally certain of the degree of accuracy I've attained, since my work is based on very "noisy" observational data) within 2-3 degrees of the correct real position, and SVC's GRS transit times should be correct within 3-5 minutes. An effort will be made to keep the GRS data reasonably up-to-date, beyond the January 2017 date mentioned above.

-

The display of the GRS's System II longitude seen in the Moons/GRS view will be  green  for times within the coverage of the longitude table, as well as for times within one year of that coverage,  yellow  for times from one to two years outside of the table, and  red  all other times, as an indication of the likely validity and accuracy of the data.

+

The display of the GRS's System II longitude seen in the Moons/GRS view will be  green  for times within the coverage of the longitude table, as well as for times within one year of that coverage,  yellow  for times from one to two years outside of the table, and  red  all other times, as an indication of the likely validity and accuracy of the data.

Insolation View

@@ -442,11 +474,11 @@

Accuracy and Systems of Time

There is an option to display SVC's clock with seconds, but please keep in mind that most of the data is not that precise! Being able to step one second at a time, however, is useful, and reasonably accurate, when examining eclipse circumstances for eclipses over a range of about one century. Since latitude and longitude can only be set with a precision of one arc-minute, or in decimal mode, one hundredth of a degree, the one-second accuracy of the clock is more important for seeing the duration of an eclipse, not its precise starting and ending time.

-

The accuracy of the methods mentioned above depends on a very accurate time scale, even more accurate than the Earth itself keeps as it spins about its axis. This kind of time used by astronomers is known as Dynamical Time, and the particular form of Dynamical Time used here is Barycentric Dynamic Time, or TDB. TDB's uniform scale means that it is not in perfect sync with Universal Time (UT), which is periodically adjusted to keep pace with the uneven rotation of the Earth. Our civil time is based on Coordinated Universal Time (UTC), which is maintained within 0.9 seconds of UT, and gets adjusted to keep pace with UT a full second at a time — these are the "leap seconds" you often hear about, especially on New Year's Eve. (For more information, see the Systems of Time web page provided by the U.S. Naval Observatory.)

+

The accuracy of the methods mentioned above depends on a very accurate time scale, even more accurate than the Earth itself keeps as it spins about its axis. This kind of time used by astronomers is known as Dynamical Time, and the particular form of Dynamical Time used here is Barycentric Dynamic Time, or TDB. TDB's uniform scale means that it is not in perfect sync with Universal Time (UT), which is periodically adjusted to keep pace with the uneven rotation of the Earth. Our civil time is based on Coordinated Universal Time (UTC), which is maintained within 0.9 seconds of UT, and gets adjusted to keep pace with UT a full second at a time — these are the "leap seconds" you often hear about, especially on New Year's Eve. (For more information, see the Systems of Time web page provided by the U.S. Naval Observatory.)

What you enter into SVC's clock is UT, so there are no leap seconds. Except when the difference of a single second is important, you can consider UT to be essentially the same thing as the UTC (adjusted locally for your timezone) that we set our watches and clocks by. Enough astronomical data has been gathered historically to create a tabular conversion of UT to TDB which covers the years 1620 to the present, accurate within a few seconds — fractions of a second for the past century. From -500 to 1600, historical records of events such as solar eclipses have provided enough information for rough estimates of UT over that period. Earlier than -500 may never be known with great accuracy, and accuracy beyond the current year depends on measurements which won't be taken until each new year is upon us. For times before the year -500, or after the current year, approximation formulae are used which become more and more inaccurate the further outside of this range you go. When setting the year of SVC's clock to its past and future limits, the years -6000 and 9999, the inaccuracy of UT may amount to several minutes, or even several hours.

-

Having brought up the subject of setting the year, it should be mentioned that back in 1582 +

Having brought up the subject of setting the year, it should be mentioned that back in 1582 a curious thing happened to the calendar. The calendar system in use throughout the Western world before the year 1582, called the Julian calendar (after Julius Caesar), had drifted ten days off from the seasons — the first day of Spring was occurring around March 11 instead of March 21. Pope Gregory XIII, with the aid of astronomical advice from Christopher Clavius, introduced an ingenious modification to the rules about leap years, creating a system which would be accurate to within one day every 3000 years. Under the new calendar there would be a leap year every four years, just like in the old Julian @@ -480,15 +512,15 @@

Automatic Location Awareness

If you're a current user of SVC and have already entered and saved your location, your saved location will be used instead of an IP look-up. New users may want to refine the location that's automatically generated by the geolocation server — occasionally it can be fairly far off: for example, you might get internet service through Verizon, and rather than getting your own home location by automatic look-up, you'll get the location of a major Verizon office hundreds of miles away. Sometimes there will be no match for your IP address at all, or the geolocation service will be offline and unavailable, making manual entry of your location necessary.

-

You can access the geolocation service currently used by SVC here : http://ip-api.com/

+

You can access the geolocation service currently used by SVC here : https://ip-api.com/

Where Credit is Due

A great deal of credit must go to Jean Meeus and his excellent book Astronomical Algorithms (Second English Edition, 1998, Willmann-Bell). Through his book, credit is further due to P. Bretagnon and G. Francou for their work on VSOP87, to Michelle Chapront-Touze and Jean Chapront for their ELP-2000 Lunar Theory, to Aldo Vitagliano for his work on Pluto, to Jay Lieske for his E5 theory of the Jovian moons, to Gérard Dourneau for his methods for the moons of Saturn, and to many others.

-

Paul Schlyter's web page Computing Planetary Positions was very helpful in my work, as well as some direct personal help from Paul himself provided through the sci.astro.amateur newsgroup. NASA and the United States Naval Observatory provide online data sources that I found quite useful in both generating and confirming my calculations, such as NASA's Astronomical Data Center and USNO's Data Services.

+

Paul Schlyter's web page How to compute planetary positions was very helpful in my work, as well as some direct personal help from Paul himself provided through the sci.astro.amateur newsgroup. NASA and the United States Naval Observatory provide online data sources that I found quite useful in both generating and confirming my calculations (at websites which are unfortunately now no longer available).

-

John Walker's Your Sky web site was an inspiration and a touchstone for SVC. Your Sky is less interactive than SVC, but by keeping its computing resources on a web server it is able to hold a richer data set of stars and deep sky objects — enough data to provide a useful "virtual telescope" feature. Your Sky is also more compatible with a wider range of web browsers.

+

John Walker's Your Sky web site was an inspiration and a touchstone for SVC. Your Sky is less interactive than SVC, but by keeping its computing resources on a web server it is able to hold a richer data set of stars and deep sky objects — enough data to provide a useful "virtual telescope" feature. Your Sky is also more compatible with a wider range of web browsers.

The Map view uses a world map created from satellite photography, obtained from NASA's Visible Earth collection.

@@ -510,8 +542,8 @@

Where Credit is Due

8. Imagine a line running along the sky from north to south, directly overhead. A celestial object is said to be at transit at your location when, as it moves from east to west across the sky, it crosses this line. This is when the object is highest in the sky during the course of a day. The planets are typically directly south at transit for Northern Hemisphere observers, and directly north for Southern Hemisphere observers — as you move closer to the equator, however, and the planet strays further from the celestial equator, the latter is not always true. [back]

-
BACK TO TOP

+BACK TO TOP

- +