astro-viewer 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +373 -0
- package/dist/astroviewer.cjs +13941 -0
- package/dist/astroviewer.cjs.map +1 -0
- package/dist/astroviewer.js +2 -0
- package/dist/astroviewer.js.map +1 -0
- package/dist/astroviewer.min.js +2 -0
- package/dist/astroviewer.min.js.map +1 -0
- package/lib-esm/AstroSphere.d.ts +114 -0
- package/lib-esm/AstroSphere.d.ts.map +1 -0
- package/lib-esm/AstroSphere.js +679 -0
- package/lib-esm/AstroSphere.js.map +1 -0
- package/lib-esm/AstroViewer.d.ts +81 -0
- package/lib-esm/AstroViewer.d.ts.map +1 -0
- package/lib-esm/AstroViewer.js +348 -0
- package/lib-esm/AstroViewer.js.map +1 -0
- package/lib-esm/Camera.d.ts +74 -0
- package/lib-esm/Camera.d.ts.map +1 -0
- package/lib-esm/Camera.js +334 -0
- package/lib-esm/Camera.js.map +1 -0
- package/lib-esm/Config.d.ts +20 -0
- package/lib-esm/Config.d.ts.map +1 -0
- package/lib-esm/Config.js +32 -0
- package/lib-esm/Config.js.map +1 -0
- package/lib-esm/Global.d.ts +27 -0
- package/lib-esm/Global.d.ts.map +1 -0
- package/lib-esm/Global.js +52 -0
- package/lib-esm/Global.js.map +1 -0
- package/lib-esm/index.d.ts +17 -0
- package/lib-esm/index.d.ts.map +1 -0
- package/lib-esm/index.js +16 -0
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/model/AbstractSkyEntity.d.ts +55 -0
- package/lib-esm/model/AbstractSkyEntity.d.ts.map +1 -0
- package/lib-esm/model/AbstractSkyEntity.js +153 -0
- package/lib-esm/model/AbstractSkyEntity.js.map +1 -0
- package/lib-esm/model/AstroGL.d.ts +11 -0
- package/lib-esm/model/AstroGL.d.ts.map +1 -0
- package/lib-esm/model/AstroGL.js +2 -0
- package/lib-esm/model/AstroGL.js.map +1 -0
- package/lib-esm/model/ColorMaps.d.ts +17 -0
- package/lib-esm/model/ColorMaps.d.ts.map +1 -0
- package/lib-esm/model/ColorMaps.js +1288 -0
- package/lib-esm/model/ColorMaps.js.map +1 -0
- package/lib-esm/model/FoV.d.ts +63 -0
- package/lib-esm/model/FoV.d.ts.map +1 -0
- package/lib-esm/model/FoV.js +275 -0
- package/lib-esm/model/FoV.js.map +1 -0
- package/lib-esm/model/MetadataColumn.d.ts +50 -0
- package/lib-esm/model/MetadataColumn.d.ts.map +1 -0
- package/lib-esm/model/MetadataColumn.js +95 -0
- package/lib-esm/model/MetadataColumn.js.map +1 -0
- package/lib-esm/model/MetadataManager.d.ts +43 -0
- package/lib-esm/model/MetadataManager.d.ts.map +1 -0
- package/lib-esm/model/MetadataManager.js +117 -0
- package/lib-esm/model/MetadataManager.js.map +1 -0
- package/lib-esm/model/Point.d.ts +53 -0
- package/lib-esm/model/Point.d.ts.map +1 -0
- package/lib-esm/model/Point.js +133 -0
- package/lib-esm/model/Point.js.map +1 -0
- package/lib-esm/model/Point2D.d.ts +9 -0
- package/lib-esm/model/Point2D.d.ts.map +1 -0
- package/lib-esm/model/Point2D.js +16 -0
- package/lib-esm/model/Point2D.js.map +1 -0
- package/lib-esm/model/Source.d.ts +34 -0
- package/lib-esm/model/Source.d.ts.map +1 -0
- package/lib-esm/model/Source.js +63 -0
- package/lib-esm/model/Source.js.map +1 -0
- package/lib-esm/model/catalogues/CatalogueGL.d.ts +91 -0
- package/lib-esm/model/catalogues/CatalogueGL.d.ts.map +1 -0
- package/lib-esm/model/catalogues/CatalogueGL.js +614 -0
- package/lib-esm/model/catalogues/CatalogueGL.js.map +1 -0
- package/lib-esm/model/catalogues/CatalogueProps.d.ts +2 -0
- package/lib-esm/model/catalogues/CatalogueProps.d.ts.map +1 -0
- package/lib-esm/model/catalogues/CatalogueProps.js +156 -0
- package/lib-esm/model/catalogues/CatalogueProps.js.map +1 -0
- package/lib-esm/model/footprints/Footprint.d.ts +44 -0
- package/lib-esm/model/footprints/Footprint.d.ts.map +1 -0
- package/lib-esm/model/footprints/Footprint.js +104 -0
- package/lib-esm/model/footprints/Footprint.js.map +1 -0
- package/lib-esm/model/footprints/FootprintProps.d.ts +2 -0
- package/lib-esm/model/footprints/FootprintProps.d.ts.map +1 -0
- package/lib-esm/model/footprints/FootprintProps.js +87 -0
- package/lib-esm/model/footprints/FootprintProps.js.map +1 -0
- package/lib-esm/model/footprints/FootprintSetGL.d.ts +106 -0
- package/lib-esm/model/footprints/FootprintSetGL.d.ts.map +1 -0
- package/lib-esm/model/footprints/FootprintSetGL.js +592 -0
- package/lib-esm/model/footprints/FootprintSetGL.js.map +1 -0
- package/lib-esm/model/grid/EquatorialGrid.d.ts +49 -0
- package/lib-esm/model/grid/EquatorialGrid.d.ts.map +1 -0
- package/lib-esm/model/grid/EquatorialGrid.js +302 -0
- package/lib-esm/model/grid/EquatorialGrid.js.map +1 -0
- package/lib-esm/model/grid/GridTextHelper.d.ts +26 -0
- package/lib-esm/model/grid/GridTextHelper.d.ts.map +1 -0
- package/lib-esm/model/grid/GridTextHelper.js +92 -0
- package/lib-esm/model/grid/GridTextHelper.js.map +1 -0
- package/lib-esm/model/grid/HealpixGrid.d.ts +49 -0
- package/lib-esm/model/grid/HealpixGrid.d.ts.map +1 -0
- package/lib-esm/model/grid/HealpixGrid.js +306 -0
- package/lib-esm/model/grid/HealpixGrid.js.map +1 -0
- package/lib-esm/model/hips/AllSky.d.ts +40 -0
- package/lib-esm/model/hips/AllSky.d.ts.map +1 -0
- package/lib-esm/model/hips/AllSky.js +232 -0
- package/lib-esm/model/hips/AllSky.js.map +1 -0
- package/lib-esm/model/hips/AncestorTile.d.ts +38 -0
- package/lib-esm/model/hips/AncestorTile.d.ts.map +1 -0
- package/lib-esm/model/hips/AncestorTile.js +248 -0
- package/lib-esm/model/hips/AncestorTile.js.map +1 -0
- package/lib-esm/model/hips/FoVHelper.d.ts +11 -0
- package/lib-esm/model/hips/FoVHelper.d.ts.map +1 -0
- package/lib-esm/model/hips/FoVHelper.js +107 -0
- package/lib-esm/model/hips/FoVHelper.js.map +1 -0
- package/lib-esm/model/hips/HiPS.d.ts +47 -0
- package/lib-esm/model/hips/HiPS.d.ts.map +1 -0
- package/lib-esm/model/hips/HiPS.js +222 -0
- package/lib-esm/model/hips/HiPS.js.map +1 -0
- package/lib-esm/model/hips/HiPSDescriptor.d.ts +37 -0
- package/lib-esm/model/hips/HiPSDescriptor.d.ts.map +1 -0
- package/lib-esm/model/hips/HiPSDescriptor.js +132 -0
- package/lib-esm/model/hips/HiPSDescriptor.js.map +1 -0
- package/lib-esm/model/hips/Tile.d.ts +51 -0
- package/lib-esm/model/hips/Tile.d.ts.map +1 -0
- package/lib-esm/model/hips/Tile.js +355 -0
- package/lib-esm/model/hips/Tile.js.map +1 -0
- package/lib-esm/model/hips/TileBuffer.d.ts +39 -0
- package/lib-esm/model/hips/TileBuffer.d.ts.map +1 -0
- package/lib-esm/model/hips/TileBuffer.js +148 -0
- package/lib-esm/model/hips/TileBuffer.js.map +1 -0
- package/lib-esm/model/hips/VisibleTilesManager.d.ts +35 -0
- package/lib-esm/model/hips/VisibleTilesManager.d.ts.map +1 -0
- package/lib-esm/model/hips/VisibleTilesManager.js +160 -0
- package/lib-esm/model/hips/VisibleTilesManager.js.map +1 -0
- package/lib-esm/model/tap/TapMetadata.d.ts +31 -0
- package/lib-esm/model/tap/TapMetadata.d.ts.map +1 -0
- package/lib-esm/model/tap/TapMetadata.js +55 -0
- package/lib-esm/model/tap/TapMetadata.js.map +1 -0
- package/lib-esm/model/tap/TapMetadataList.d.ts +23 -0
- package/lib-esm/model/tap/TapMetadataList.d.ts.map +1 -0
- package/lib-esm/model/tap/TapMetadataList.js +58 -0
- package/lib-esm/model/tap/TapMetadataList.js.map +1 -0
- package/lib-esm/model/tap/TapRepo.d.ts +27 -0
- package/lib-esm/model/tap/TapRepo.d.ts.map +1 -0
- package/lib-esm/model/tap/TapRepo.js +51 -0
- package/lib-esm/model/tap/TapRepo.js.map +1 -0
- package/lib-esm/services/SesameService.d.ts +14 -0
- package/lib-esm/services/SesameService.d.ts.map +1 -0
- package/lib-esm/services/SesameService.js +54 -0
- package/lib-esm/services/SesameService.js.map +1 -0
- package/lib-esm/services/helpers.d.ts +5 -0
- package/lib-esm/services/helpers.d.ts.map +1 -0
- package/lib-esm/services/helpers.js +16 -0
- package/lib-esm/services/helpers.js.map +1 -0
- package/lib-esm/services/hipsNodeService.d.ts +7 -0
- package/lib-esm/services/hipsNodeService.d.ts.map +1 -0
- package/lib-esm/services/hipsNodeService.js +65 -0
- package/lib-esm/services/hipsNodeService.js.map +1 -0
- package/lib-esm/services/parse-hipslist.d.ts +3 -0
- package/lib-esm/services/parse-hipslist.d.ts.map +1 -0
- package/lib-esm/services/parse-hipslist.js +25 -0
- package/lib-esm/services/parse-hipslist.js.map +1 -0
- package/lib-esm/services/queryCatalogueByFoV.d.ts +2 -0
- package/lib-esm/services/queryCatalogueByFoV.d.ts.map +1 -0
- package/lib-esm/services/queryCatalogueByFoV.js +56 -0
- package/lib-esm/services/queryCatalogueByFoV.js.map +1 -0
- package/lib-esm/services/queryFootprintSetByFov.d.ts +2 -0
- package/lib-esm/services/queryFootprintSetByFov.d.ts.map +1 -0
- package/lib-esm/services/queryFootprintSetByFov.js +128 -0
- package/lib-esm/services/queryFootprintSetByFov.js.map +1 -0
- package/lib-esm/services/tapRepoService.d.ts +2 -0
- package/lib-esm/services/tapRepoService.d.ts.map +1 -0
- package/lib-esm/services/tapRepoService.js +190 -0
- package/lib-esm/services/tapRepoService.js.map +1 -0
- package/lib-esm/services/types.d.ts +13 -0
- package/lib-esm/services/types.d.ts.map +1 -0
- package/lib-esm/services/types.js +2 -0
- package/lib-esm/services/types.js.map +1 -0
- package/lib-esm/shader/CatalogueShaderProgram.d.ts +35 -0
- package/lib-esm/shader/CatalogueShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/CatalogueShaderProgram.js +94 -0
- package/lib-esm/shader/CatalogueShaderProgram.js.map +1 -0
- package/lib-esm/shader/FootprintShaderProgram.d.ts +31 -0
- package/lib-esm/shader/FootprintShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/FootprintShaderProgram.js +86 -0
- package/lib-esm/shader/FootprintShaderProgram.js.map +1 -0
- package/lib-esm/shader/GridShaderManager.d.ts +6 -0
- package/lib-esm/shader/GridShaderManager.d.ts.map +1 -0
- package/lib-esm/shader/GridShaderManager.js +29 -0
- package/lib-esm/shader/GridShaderManager.js.map +1 -0
- package/lib-esm/shader/HiPSShaderProgram.d.ts +54 -0
- package/lib-esm/shader/HiPSShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/HiPSShaderProgram.js +257 -0
- package/lib-esm/shader/HiPSShaderProgram.js.map +1 -0
- package/lib-esm/shader/ShaderManager.d.ts +12 -0
- package/lib-esm/shader/ShaderManager.d.ts.map +1 -0
- package/lib-esm/shader/ShaderManager.js +344 -0
- package/lib-esm/shader/ShaderManager.js.map +1 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts +12 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts.map +1 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.js +750 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.js.map +1 -0
- package/lib-esm/utils/CoordsType.d.ts +10 -0
- package/lib-esm/utils/CoordsType.d.ts.map +1 -0
- package/lib-esm/utils/CoordsType.js +12 -0
- package/lib-esm/utils/CoordsType.js.map +1 -0
- package/lib-esm/utils/FoVUtils.d.ts +46 -0
- package/lib-esm/utils/FoVUtils.d.ts.map +1 -0
- package/lib-esm/utils/FoVUtils.js +217 -0
- package/lib-esm/utils/FoVUtils.js.map +1 -0
- package/lib-esm/utils/GeomUtils.d.ts +36 -0
- package/lib-esm/utils/GeomUtils.d.ts.map +1 -0
- package/lib-esm/utils/GeomUtils.js +267 -0
- package/lib-esm/utils/GeomUtils.js.map +1 -0
- package/lib-esm/utils/MouseHelper.d.ts +36 -0
- package/lib-esm/utils/MouseHelper.d.ts.map +1 -0
- package/lib-esm/utils/MouseHelper.js +94 -0
- package/lib-esm/utils/MouseHelper.js.map +1 -0
- package/lib-esm/utils/PerspectiveMatrixManager.d.ts +11 -0
- package/lib-esm/utils/PerspectiveMatrixManager.d.ts.map +1 -0
- package/lib-esm/utils/PerspectiveMatrixManager.js +37 -0
- package/lib-esm/utils/PerspectiveMatrixManager.js.map +1 -0
- package/lib-esm/utils/RayPickingUtils.d.ts +30 -0
- package/lib-esm/utils/RayPickingUtils.d.ts.map +1 -0
- package/lib-esm/utils/RayPickingUtils.js +112 -0
- package/lib-esm/utils/RayPickingUtils.js.map +1 -0
- package/lib-esm/utils/STCSParser.d.ts +16 -0
- package/lib-esm/utils/STCSParser.d.ts.map +1 -0
- package/lib-esm/utils/STCSParser.js +96 -0
- package/lib-esm/utils/STCSParser.js.map +1 -0
- package/lib-esm/utils/ShaderUtility.d.ts +2 -0
- package/lib-esm/utils/ShaderUtility.d.ts.map +1 -0
- package/lib-esm/utils/ShaderUtility.js +23 -0
- package/lib-esm/utils/ShaderUtility.js.map +1 -0
- package/lib-esm/utils/Utils.d.ts +32 -0
- package/lib-esm/utils/Utils.d.ts.map +1 -0
- package/lib-esm/utils/Utils.js +77 -0
- package/lib-esm/utils/Utils.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-hipslist.d.ts","sourceRoot":"","sources":["../../src/services/parse-hipslist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAqB3D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function parseHipsList(text) {
|
|
2
|
+
const out = [];
|
|
3
|
+
let current = null;
|
|
4
|
+
for (const raw of text.split(/\r?\n/)) {
|
|
5
|
+
const line = raw.trim();
|
|
6
|
+
if (!line || line.startsWith('#'))
|
|
7
|
+
continue;
|
|
8
|
+
const [k, ...rest] = line.split('=');
|
|
9
|
+
const key = k?.trim();
|
|
10
|
+
const val = rest.join('=').trim();
|
|
11
|
+
if (key === 'hips_service_url') {
|
|
12
|
+
// start a new block
|
|
13
|
+
if (current)
|
|
14
|
+
out.push(current);
|
|
15
|
+
current = { hips_service_url: val };
|
|
16
|
+
}
|
|
17
|
+
else if (current && (key === 'hips_release_date' || key === 'creator_did')) {
|
|
18
|
+
current[key] = val;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (current)
|
|
22
|
+
out.push(current);
|
|
23
|
+
return out;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=parse-hipslist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-hipslist.js","sourceRoot":"","sources":["../../src/services/parse-hipslist.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,IAAI,OAAO,GAAyB,IAAI,CAAA;IAExC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC3C,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAA;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QAEjC,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YAC/B,oBAAoB;YACpB,IAAI,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC9B,OAAO,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAA;QACrC,CAAC;aAAM,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,mBAAmB,IAAI,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;QACpB,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryCatalogueByFoV.d.ts","sourceRoot":"","sources":["../../src/services/queryCatalogueByFoV.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// import {CatalogueGL} from '../model/catalogues/CatalogueGL.js'
|
|
2
|
+
// import {TapMetadata} from '../model/tap/TapMetadata.js'
|
|
3
|
+
// import {TapMetadataList} from '../model/tap/TapMetadataList.js'
|
|
4
|
+
// import { queryAsync } from './tapRepoService.js'
|
|
5
|
+
export {};
|
|
6
|
+
// // Optional timeout; adjust or remove if you don’t use timeouts.
|
|
7
|
+
// const TAP_QUERY_TIMEOUT_MS = 60_000
|
|
8
|
+
// // Small helpers to be robust with slightly different metadata shapes
|
|
9
|
+
// function getColName(col: TapMetadata | undefined): string {
|
|
10
|
+
// if (!col) return ''
|
|
11
|
+
// return (col.name ?? col.name ?? '').toString()
|
|
12
|
+
// }
|
|
13
|
+
// export default async function queryCatalogueByFoV(
|
|
14
|
+
// catalogue: CatalogueGL,
|
|
15
|
+
// polygonAdql: String
|
|
16
|
+
// ): Promise<CatalogueGL | undefined> {
|
|
17
|
+
// try {
|
|
18
|
+
// // Resolve RA/Dec column names (CatalogueProps already picked them from metadata)
|
|
19
|
+
// const raCol = getColName(catalogue.catalogueProps.raColumn)
|
|
20
|
+
// const decCol = getColName(catalogue.catalogueProps.decColumn)
|
|
21
|
+
// const tapTable = catalogue._name
|
|
22
|
+
// if (!raCol || !decCol) {
|
|
23
|
+
// console.warn('[queryCatalogueByFoV] RA/Dec columns were not resolved from metadata.')
|
|
24
|
+
// return
|
|
25
|
+
// }
|
|
26
|
+
// const adql = `SELECT * FROM ${tapTable} WHERE 1 = CONTAINS(POINT('ICRS', ${raCol}, ${decCol}), POLYGON('ICRS',${polygonAdql}))`
|
|
27
|
+
// // Fire the TAP query
|
|
28
|
+
// const rows = await queryAsync(catalogue.tapRepo, adql, TAP_QUERY_TIMEOUT_MS)
|
|
29
|
+
// console.log(rows)
|
|
30
|
+
// if (rows && rows.data.length > 0) {
|
|
31
|
+
// const metadata = rows.metadata
|
|
32
|
+
// const data = rows.data
|
|
33
|
+
// console.log(`Found ${data.length} results for ${catalogue._name}`)
|
|
34
|
+
// let tapMetadataList = new TapMetadataList()
|
|
35
|
+
// for (const element of metadata) {
|
|
36
|
+
// const name = element.name
|
|
37
|
+
// const description = element.description !== undefined ? element.description : undefined
|
|
38
|
+
// const unit = element.unit !== undefined ? element.unit : undefined
|
|
39
|
+
// const datatype = element.datatype !== undefined ? element.datatype : undefined
|
|
40
|
+
// const ucd = element.ucd !== undefined ? element.ucd : undefined
|
|
41
|
+
// const utype = element.utype !== undefined ? element.utype : undefined
|
|
42
|
+
// const tapMeta = new TapMetadata(name, description, unit, datatype, ucd, utype)
|
|
43
|
+
// tapMetadataList.addMetadata(tapMeta)
|
|
44
|
+
// }
|
|
45
|
+
// catalogue.addSources(data, tapMetadataList.metadataList)
|
|
46
|
+
// return catalogue
|
|
47
|
+
// } else {
|
|
48
|
+
// console.log('[queryCatalogueByFoV] No results found.')
|
|
49
|
+
// return
|
|
50
|
+
// }
|
|
51
|
+
// } catch (err: any) {
|
|
52
|
+
// console.error('[queryCatalogueByFoV] Error:', err?.message ?? err)
|
|
53
|
+
// return
|
|
54
|
+
// }
|
|
55
|
+
// }
|
|
56
|
+
//# sourceMappingURL=queryCatalogueByFoV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryCatalogueByFoV.js","sourceRoot":"","sources":["../../src/services/queryCatalogueByFoV.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,0DAA0D;AAC1D,kEAAkE;AAClE,mDAAmD;;AAEnD,mEAAmE;AACnE,sCAAsC;AAEtC,wEAAwE;AACxE,8DAA8D;AAC9D,0BAA0B;AAC1B,qDAAqD;AACrD,IAAI;AAEJ,qDAAqD;AACrD,8BAA8B;AAC9B,0BAA0B;AAC1B,wCAAwC;AACxC,YAAY;AAEZ,4FAA4F;AAC5F,sEAAsE;AACtE,wEAAwE;AACxE,2CAA2C;AAE3C,mCAAmC;AACnC,oGAAoG;AACpG,qBAAqB;AACrB,YAAY;AAEZ,0IAA0I;AAE1I,gCAAgC;AAChC,uFAAuF;AACvF,4BAA4B;AAE5B,+CAA+C;AAC/C,6CAA6C;AAC7C,qCAAqC;AAErC,iFAAiF;AACjF,0DAA0D;AAC1D,gDAAgD;AAChD,4CAA4C;AAC5C,0GAA0G;AAC1G,qFAAqF;AACrF,iGAAiG;AACjG,kFAAkF;AAClF,wFAAwF;AACxF,iGAAiG;AACjG,uDAAuD;AACvD,gBAAgB;AAChB,uEAAuE;AACvE,+BAA+B;AAC/B,mBAAmB;AACnB,qEAAqE;AACrE,qBAAqB;AACrB,YAAY;AACZ,2BAA2B;AAC3B,6EAA6E;AAC7E,iBAAiB;AACjB,QAAQ;AACR,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryFootprintSetByFov.d.ts","sourceRoot":"","sources":["../../src/services/queryFootprintSetByFov.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// import {FootprintSetGL} from '../model/footprints/FootprintSetGL.js'
|
|
2
|
+
// import healpixGridSingleton from '../model/grid/HealpixGridSingleton.js';
|
|
3
|
+
// import Point from '../model/Point.js';
|
|
4
|
+
// import {Metadata} from '../model/tap/TapMetadata.js'
|
|
5
|
+
// import {TapMetadataList} from '../model/tap/TapMetadataList.js'
|
|
6
|
+
// import { TapRepo } from '../model/tap/TapRepo.js';
|
|
7
|
+
// import { queryAsync } from './tapRepoService.js'
|
|
8
|
+
export {};
|
|
9
|
+
// interface ColumnLike {
|
|
10
|
+
// _name: string;
|
|
11
|
+
// }
|
|
12
|
+
// // If your FoVUtils already has TS types, feel free to delete these:
|
|
13
|
+
// type FoVPolygonString = string; // "ra1,dec1, ra2,dec2, ..."
|
|
14
|
+
// interface J2000Center { _raDeg: number; _decDeg: number; }
|
|
15
|
+
// // Optional timeout; adjust or remove if you don’t use timeouts.
|
|
16
|
+
// const TAP_QUERY_TIMEOUT_MS = 60_000
|
|
17
|
+
// // --- Function ---
|
|
18
|
+
// // Small helpers to be robust with slightly different metadata shapes
|
|
19
|
+
// function getColName(col: Metadata | undefined): string {
|
|
20
|
+
// if (!col) return ''
|
|
21
|
+
// return (col.name ?? col.name ?? '').toString()
|
|
22
|
+
// }
|
|
23
|
+
// function prepareADQL(
|
|
24
|
+
// tapTable: string,
|
|
25
|
+
// tapRa: string | undefined,
|
|
26
|
+
// tapDec: string | undefined,
|
|
27
|
+
// polygonAdql: String, tapRepo: TapRepo,
|
|
28
|
+
// centralPoint: Point): string {
|
|
29
|
+
// let adql = ""
|
|
30
|
+
// if (tapRepo.adqlFunctionList.includes('POLYGON')) {
|
|
31
|
+
// adql =
|
|
32
|
+
// 'select * from ' +
|
|
33
|
+
// tapTable +
|
|
34
|
+
// ' where 1=CONTAINS(POINT(\'ICRS\',' +
|
|
35
|
+
// tapRa +
|
|
36
|
+
// ',' +
|
|
37
|
+
// tapDec +
|
|
38
|
+
// '), POLYGON(\'ICRS\', ' +
|
|
39
|
+
// polygonAdql +
|
|
40
|
+
// '))';
|
|
41
|
+
// } else {
|
|
42
|
+
// const radius = healpixGridSingleton.getMinFoV() / 2;
|
|
43
|
+
// adql =
|
|
44
|
+
// 'select * from ' +
|
|
45
|
+
// tapTable +
|
|
46
|
+
// ' where 1=CONTAINS(POINT(\'ICRS\',' +
|
|
47
|
+
// tapRa +
|
|
48
|
+
// ',' +
|
|
49
|
+
// tapDec +
|
|
50
|
+
// '), CIRCLE(\'ICRS\', ' +
|
|
51
|
+
// centralPoint.raDeg +
|
|
52
|
+
// ', ' +
|
|
53
|
+
// centralPoint.decDeg +
|
|
54
|
+
// ', ' +
|
|
55
|
+
// radius +
|
|
56
|
+
// '))';
|
|
57
|
+
// }
|
|
58
|
+
// return adql
|
|
59
|
+
// }
|
|
60
|
+
// /**
|
|
61
|
+
// * Builds an ADQL query from current FoV and fetches footprints.
|
|
62
|
+
// * Returns the enriched FootprintSet (if any rows were found), otherwise undefined.
|
|
63
|
+
// */
|
|
64
|
+
// export default async function queryFootprintSetByFov(
|
|
65
|
+
// footprintSet: FootprintSetGL,
|
|
66
|
+
// polygonAdql: String,
|
|
67
|
+
// centralPoint: Point): Promise<FootprintSetGL | undefined> {
|
|
68
|
+
// try {
|
|
69
|
+
// // Resolve RA/Dec column names (CatalogueProps already picked them from metadata)
|
|
70
|
+
// const raCol = getColName(footprintSet.footprintsetProps.raColumn)
|
|
71
|
+
// const decCol = getColName(footprintSet.footprintsetProps.decColumn)
|
|
72
|
+
// const tapTable = footprintSet._name
|
|
73
|
+
// if (!raCol || !decCol) {
|
|
74
|
+
// console.warn('[queryCatalogueByFoV] RA/Dec columns were not resolved from metadata.')
|
|
75
|
+
// return
|
|
76
|
+
// }
|
|
77
|
+
// const adql = prepareADQL(tapTable, raCol, decCol, polygonAdql, footprintSet.tapRepo, centralPoint)
|
|
78
|
+
// const rows = await queryAsync(footprintSet.tapRepo, adql, TAP_QUERY_TIMEOUT_MS)
|
|
79
|
+
// console.log(rows)
|
|
80
|
+
// // if (rows && rows.data.length > 0) {
|
|
81
|
+
// // const metadata = rows.metadata
|
|
82
|
+
// // const data = rows.data
|
|
83
|
+
// if (
|
|
84
|
+
// typeof rows === 'object' &&
|
|
85
|
+
// rows !== null &&
|
|
86
|
+
// Array.isArray((rows as any).metadata) &&
|
|
87
|
+
// Array.isArray((rows as any).data)
|
|
88
|
+
// ) {
|
|
89
|
+
// const { metadata, data } = rows as {
|
|
90
|
+
// metadata: Array<{
|
|
91
|
+
// name: string;
|
|
92
|
+
// description: string;
|
|
93
|
+
// unit: string;
|
|
94
|
+
// datatype: string;
|
|
95
|
+
// ucd: string;
|
|
96
|
+
// utype: string;
|
|
97
|
+
// }>;
|
|
98
|
+
// data: unknown[];
|
|
99
|
+
// };
|
|
100
|
+
// const tapMetadataList = new TapMetadataList();
|
|
101
|
+
// for (const m of metadata) {
|
|
102
|
+
// const tapMeta = new Metadata(
|
|
103
|
+
// m.name,
|
|
104
|
+
// m.description ?? undefined,
|
|
105
|
+
// m.unit ?? undefined,
|
|
106
|
+
// m.datatype ?? undefined,
|
|
107
|
+
// m.ucd ?? undefined,
|
|
108
|
+
// m.utype ?? undefined
|
|
109
|
+
// );
|
|
110
|
+
// tapMetadataList.addMetadata(tapMeta);
|
|
111
|
+
// }
|
|
112
|
+
// if (data.length > 0) {
|
|
113
|
+
// footprintSet.addFootprints(data, tapMetadataList.metadataList);
|
|
114
|
+
// return footprintSet;
|
|
115
|
+
// } else {
|
|
116
|
+
// console.log('No results found');
|
|
117
|
+
// }
|
|
118
|
+
// // }
|
|
119
|
+
// } else {
|
|
120
|
+
// console.log('[queryFootprintSetByFov] No results found.')
|
|
121
|
+
// return
|
|
122
|
+
// }
|
|
123
|
+
// } catch (err: any) {
|
|
124
|
+
// console.error('[queryFootprintSetByFov] Error:', err?.message ?? err)
|
|
125
|
+
// return
|
|
126
|
+
// }
|
|
127
|
+
// }
|
|
128
|
+
//# sourceMappingURL=queryFootprintSetByFov.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryFootprintSetByFov.js","sourceRoot":"","sources":["../../src/services/queryFootprintSetByFov.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4EAA4E;AAC5E,yCAAyC;AACzC,uDAAuD;AACvD,kEAAkE;AAClE,qDAAqD;AACrD,mDAAmD;;AAGnD,yBAAyB;AACzB,mBAAmB;AACnB,IAAI;AAEJ,uEAAuE;AACvE,+DAA+D;AAC/D,6DAA6D;AAE7D,mEAAmE;AACnE,sCAAsC;AAGtC,sBAAsB;AACtB,wEAAwE;AACxE,2DAA2D;AAC3D,wBAAwB;AACxB,mDAAmD;AACnD,IAAI;AAEJ,wBAAwB;AACxB,sBAAsB;AACtB,+BAA+B;AAC/B,gCAAgC;AAChC,2CAA2C;AAC3C,mCAAmC;AACnC,kBAAkB;AAClB,wDAAwD;AACxD,aAAa;AACb,2BAA2B;AAC3B,mBAAmB;AACnB,8CAA8C;AAC9C,gBAAgB;AAChB,cAAc;AACd,iBAAiB;AACjB,kCAAkC;AAClC,sBAAsB;AACtB,cAAc;AACd,aAAa;AACb,2DAA2D;AAC3D,aAAa;AACb,2BAA2B;AAC3B,mBAAmB;AACnB,8CAA8C;AAC9C,gBAAgB;AAChB,cAAc;AACd,iBAAiB;AACjB,iCAAiC;AACjC,6BAA6B;AAC7B,eAAe;AACf,8BAA8B;AAC9B,eAAe;AACf,iBAAiB;AACjB,cAAc;AACd,MAAM;AACN,gBAAgB;AAChB,IAAI;AAEJ,MAAM;AACN,mEAAmE;AACnE,sFAAsF;AACtF,MAAM;AACN,wDAAwD;AACxD,kCAAkC;AAClC,yBAAyB;AACzB,gEAAgE;AAEhE,UAAU;AAEV,wFAAwF;AACxF,wEAAwE;AACxE,0EAA0E;AAC1E,0CAA0C;AAE1C,+BAA+B;AAC/B,8FAA8F;AAC9F,eAAe;AACf,QAAQ;AACR,yGAAyG;AAEzG,sFAAsF;AACtF,wBAAwB;AACxB,6CAA6C;AAC7C,wCAAwC;AACxC,gCAAgC;AAEhC,WAAW;AACX,oCAAoC;AACpC,yBAAyB;AACzB,iDAAiD;AACjD,0CAA0C;AAC1C,UAAU;AACV,6CAA6C;AAC7C,4BAA4B;AAC5B,0BAA0B;AAC1B,iCAAiC;AACjC,0BAA0B;AAC1B,8BAA8B;AAC9B,yBAAyB;AACzB,2BAA2B;AAC3B,cAAc;AACd,2BAA2B;AAC3B,WAAW;AACX,uDAAuD;AACvD,oCAAoC;AACpC,wCAAwC;AACxC,oBAAoB;AACpB,wCAAwC;AACxC,iCAAiC;AACjC,qCAAqC;AACrC,gCAAgC;AAChC,iCAAiC;AACjC,aAAa;AACb,gDAAgD;AAChD,UAAU;AAEV,+BAA+B;AAC/B,0EAA0E;AAC1E,+BAA+B;AAC/B,iBAAiB;AACjB,2CAA2C;AAC3C,UAAU;AACV,aAAa;AAEb,eAAe;AACf,kEAAkE;AAClE,eAAe;AACf,QAAQ;AACR,yBAAyB;AACzB,4EAA4E;AAC5E,aAAa;AACb,MAAM;AACN,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tapRepoService.d.ts","sourceRoot":"","sources":["../../src/services/tapRepoService.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// // addTAPRepo.ts
|
|
2
|
+
// import { TapRepo } from '../model/tap/TapRepo.js'
|
|
3
|
+
// import {TapMetadata} from '../model/tap/TapMetadata.js'
|
|
4
|
+
// import {TapMetadataList} from '../model/tap/TapMetadataList.js'
|
|
5
|
+
// import global from '../Global.js'
|
|
6
|
+
export {};
|
|
7
|
+
// import {CatalogueGL} from '../model/catalogues/CatalogueGL.js'
|
|
8
|
+
// import {FootprintSetGL} from '../model/footprints/FootprintSetGL.js'
|
|
9
|
+
// let catId = 1
|
|
10
|
+
// let obsId = 1
|
|
11
|
+
// export interface TapDatasets {
|
|
12
|
+
// obsList: FootprintSetGL[]
|
|
13
|
+
// catalogueList: CatalogueGL[]
|
|
14
|
+
// notClassifiedList: string[]
|
|
15
|
+
// }
|
|
16
|
+
// /**
|
|
17
|
+
// * Initialize a TapRepo and populate capabilities + datasets.
|
|
18
|
+
// */
|
|
19
|
+
// export async function addTAPRepo(repoUrl: string): Promise<TapRepo> {
|
|
20
|
+
// const tapRepo = new TapRepo(repoUrl)
|
|
21
|
+
// tapRepo.adqlFunctionList = await loadCapabilities(repoUrl)
|
|
22
|
+
// const datasets = await loadTables(repoUrl, tapRepo)
|
|
23
|
+
// tapRepo.setCataloguesList(datasets.catalogueList)
|
|
24
|
+
// tapRepo.setObservationsList(datasets.obsList)
|
|
25
|
+
// tapRepo.setNotClassifiedList(datasets.notClassifiedList)
|
|
26
|
+
// return tapRepo
|
|
27
|
+
// }
|
|
28
|
+
// export async function queryAsync(
|
|
29
|
+
// tapRepo: TapRepo,
|
|
30
|
+
// adql: string,
|
|
31
|
+
// TAP_QUERY_TIMEOUT_MS: number
|
|
32
|
+
// ): Promise<any | null> {
|
|
33
|
+
// const base = global.corsProxyUrl.replace(/\/?$/, '/'); // ensure trailing /
|
|
34
|
+
// const url = new URL('adql', base);
|
|
35
|
+
// url.searchParams.set('tapurl', tapRepo.tapBaseUrl);
|
|
36
|
+
// url.searchParams.set('query', adql);
|
|
37
|
+
// const ac = new AbortController();
|
|
38
|
+
// const t = setTimeout(() => ac.abort(), TAP_QUERY_TIMEOUT_MS || 30000);
|
|
39
|
+
// try {
|
|
40
|
+
// const response = await fetch(url.toString(), {
|
|
41
|
+
// method: 'GET',
|
|
42
|
+
// mode: 'cors',
|
|
43
|
+
// signal: ac.signal,
|
|
44
|
+
// headers: { Accept: 'application/json' }
|
|
45
|
+
// });
|
|
46
|
+
// if (!response.ok) {
|
|
47
|
+
// const text = await response.text().catch(() => '');
|
|
48
|
+
// throw new Error(`HTTP ${response.status} ${response.statusText} – ${text}`);
|
|
49
|
+
// }
|
|
50
|
+
// return await response.json(); // return type is 'any'
|
|
51
|
+
// } catch (err: any) {
|
|
52
|
+
// console.error('queryAsync error:', err?.message || err);
|
|
53
|
+
// return null;
|
|
54
|
+
// } finally {
|
|
55
|
+
// clearTimeout(t);
|
|
56
|
+
// }
|
|
57
|
+
// }
|
|
58
|
+
// /**
|
|
59
|
+
// * Fetch and parse tables from a TAP service.
|
|
60
|
+
// */
|
|
61
|
+
// const loadTables = async (tapUrl: string, tapRepo: TapRepo): Promise<TapDatasets> => {
|
|
62
|
+
// const tablesUrl = `${tapUrl}/tables`
|
|
63
|
+
// const requestUrl = `${global.corsProxyUrl}exturl?url=${encodeURIComponent(tablesUrl)}`
|
|
64
|
+
// const result: TapDatasets = { obsList: [], catalogueList: [], notClassifiedList: [] }
|
|
65
|
+
// try {
|
|
66
|
+
// const response = await fetch(requestUrl, { method: 'GET', mode: 'cors' })
|
|
67
|
+
// const raw = await response.text()
|
|
68
|
+
// const data = raw.replace(/\n\t|\t|\n/g, '')
|
|
69
|
+
// const parser = new DOMParser()
|
|
70
|
+
// const doc = parser.parseFromString(data, 'application/xml')
|
|
71
|
+
// const root = doc.firstElementChild
|
|
72
|
+
// if (!root) throw new Error('Error parsing TAP XML. Missing root element.')
|
|
73
|
+
// if (!/tableset$/i.test(root.nodeName)) {
|
|
74
|
+
// throw new Error(`Error parsing TAP XML. ${root.nodeName} not recognised`)
|
|
75
|
+
// }
|
|
76
|
+
// const catalogueList: CatalogueGL[] = []
|
|
77
|
+
// const obsList: FootprintSetGL[] = []
|
|
78
|
+
// const notClassifiedList: string[] = []
|
|
79
|
+
// // schemas
|
|
80
|
+
// for (const schema of Array.from(root.children)) {
|
|
81
|
+
// if (schema.nodeName !== 'schema') continue
|
|
82
|
+
// for (const table of Array.from(schema.children)) {
|
|
83
|
+
// if (table.nodeName !== 'table') continue
|
|
84
|
+
// const dataset = parseTable(table as Element, tablesUrl, tapRepo)
|
|
85
|
+
// if (!dataset) continue
|
|
86
|
+
// if (dataset.catalogue) {
|
|
87
|
+
// ; (dataset.catalogue as any).id = catId++ // keep parity with existing code
|
|
88
|
+
// catalogueList.push(dataset.catalogue)
|
|
89
|
+
// }
|
|
90
|
+
// if (dataset.footprint) {
|
|
91
|
+
// ; (dataset.footprint as any).id = obsId++
|
|
92
|
+
// obsList.push(dataset.footprint)
|
|
93
|
+
// }
|
|
94
|
+
// if (dataset.notClassified) {
|
|
95
|
+
// notClassifiedList.push(dataset.notClassified)
|
|
96
|
+
// }
|
|
97
|
+
// }
|
|
98
|
+
// }
|
|
99
|
+
// return { catalogueList, obsList, notClassifiedList }
|
|
100
|
+
// } catch (err: any) {
|
|
101
|
+
// console.error(err?.message ?? err)
|
|
102
|
+
// return result
|
|
103
|
+
// }
|
|
104
|
+
// }
|
|
105
|
+
// /**
|
|
106
|
+
// * Fetch and parse TAP capabilities to extract ADQL functions.
|
|
107
|
+
// */
|
|
108
|
+
// const loadCapabilities = async (repoUrl: string): Promise<string[]> => {
|
|
109
|
+
// const capabilitiesUrl = `${repoUrl}/capabilities`
|
|
110
|
+
// const requestUrl = `${global.corsProxyUrl}exturl?url=${encodeURIComponent(capabilitiesUrl)}`
|
|
111
|
+
// let capabilities: string[] = []
|
|
112
|
+
// try {
|
|
113
|
+
// const response = await fetch(requestUrl, { method: 'GET', mode: 'cors' })
|
|
114
|
+
// const raw = await response.text()
|
|
115
|
+
// const data = raw.replace(/\n\t|\t|\n/g, '')
|
|
116
|
+
// const parser = new DOMParser()
|
|
117
|
+
// const doc = parser.parseFromString(data, 'application/xml')
|
|
118
|
+
// const root = doc.firstElementChild
|
|
119
|
+
// if (!root) throw new Error('Error parsing TAP XML. Missing root element.')
|
|
120
|
+
// if (!/capabilities$/i.test(root.nodeName)) {
|
|
121
|
+
// throw new Error(`Error parsing TAP XML. ${root.nodeName} not recognised`)
|
|
122
|
+
// }
|
|
123
|
+
// for (const capability of Array.from(root.children)) {
|
|
124
|
+
// if (capability.nodeName !== 'capability') continue
|
|
125
|
+
// for (const child of Array.from(capability.children)) {
|
|
126
|
+
// if (child.nodeName === 'language') {
|
|
127
|
+
// capabilities = parseCapabilities(child as Element)
|
|
128
|
+
// }
|
|
129
|
+
// }
|
|
130
|
+
// }
|
|
131
|
+
// return capabilities
|
|
132
|
+
// } catch (err: any) {
|
|
133
|
+
// console.error(err?.message ?? err)
|
|
134
|
+
// return capabilities
|
|
135
|
+
// }
|
|
136
|
+
// }
|
|
137
|
+
// /**
|
|
138
|
+
// * Parse the <language> node to extract ADQL functions.
|
|
139
|
+
// */
|
|
140
|
+
// const parseCapabilities = (languageNode: Element): string[] => {
|
|
141
|
+
// const out: string[] = []
|
|
142
|
+
// const featuresContainers = languageNode.getElementsByTagName('languageFeatures')
|
|
143
|
+
// if (!featuresContainers.length) return out
|
|
144
|
+
// const featureNodeList = featuresContainers[0].getElementsByTagName('feature')
|
|
145
|
+
// for (const feature of Array.from(featureNodeList)) {
|
|
146
|
+
// const formNode = feature.getElementsByTagName('form')[0]
|
|
147
|
+
// if (formNode?.textContent) out.push(formNode.textContent)
|
|
148
|
+
// }
|
|
149
|
+
// return out
|
|
150
|
+
// }
|
|
151
|
+
// type TableParseResult = {
|
|
152
|
+
// catalogue: CatalogueGL | null
|
|
153
|
+
// footprint: FootprintSetGL | null
|
|
154
|
+
// notClassified: string | null
|
|
155
|
+
// }
|
|
156
|
+
// /**
|
|
157
|
+
// * Parse a <table> node and build dataset wrappers.
|
|
158
|
+
// */
|
|
159
|
+
// const parseTable = (tableNode: Element, tablesUrl: string, tapRepo: TapRepo): TableParseResult => {
|
|
160
|
+
// const nameNode = tableNode.getElementsByTagName('name')[0]
|
|
161
|
+
// if (!nameNode?.textContent) {
|
|
162
|
+
// return { catalogue: null, footprint: null, notClassified: 'Missing table name' }
|
|
163
|
+
// }
|
|
164
|
+
// const tableName = nameNode.textContent
|
|
165
|
+
// const tableDesc = tableNode.getElementsByTagName('description')[0]?.textContent ?? null
|
|
166
|
+
// const metaColumns = tableNode.getElementsByTagName('column')
|
|
167
|
+
// const tapMetas = new TapMetadataList()
|
|
168
|
+
// for (const col of Array.from(metaColumns)) {
|
|
169
|
+
// const name = col.getElementsByTagName('name')[0]?.textContent ?? ''
|
|
170
|
+
// const description = col.getElementsByTagName('description')[0]?.textContent ?? undefined
|
|
171
|
+
// const unit = col.getElementsByTagName('unit')[0]?.textContent ?? undefined
|
|
172
|
+
// const dataType = col.getElementsByTagName('dataType')[0]?.textContent ?? undefined
|
|
173
|
+
// const ucd = col.getElementsByTagName('ucd')[0]?.textContent ?? undefined
|
|
174
|
+
// const utype = col.getElementsByTagName('utype')[0]?.textContent ?? undefined
|
|
175
|
+
// const tapMeta = new TapMetadata(name, description, unit, dataType, ucd, utype)
|
|
176
|
+
// tapMetas.addMetadata(tapMeta)
|
|
177
|
+
// }
|
|
178
|
+
// let catalogue: CatalogueGL | null = null
|
|
179
|
+
// let footprint: FootprintSetGL | null = null
|
|
180
|
+
// let notClassified: string | null = null
|
|
181
|
+
// if (tapMetas.pgSphereMetaColumns.length > 0 || tapMetas.sRegionMetaColumns.length > 0) {
|
|
182
|
+
// footprint = new FootprintSetGL(tableName, tableDesc, tapRepo, tapMetas)
|
|
183
|
+
// } else if (tapMetas.posEqRAMetaColumns.length > 0 && tapMetas.posEqDecMetaColumns.length > 0) {
|
|
184
|
+
// catalogue = new CatalogueGL(tableName, tableDesc, tapRepo, tapMetas)
|
|
185
|
+
// } else {
|
|
186
|
+
// notClassified = `TODO: create NC entity for ${tablesUrl}#${tableName}`
|
|
187
|
+
// }
|
|
188
|
+
// return { catalogue, footprint, notClassified }
|
|
189
|
+
// }
|
|
190
|
+
//# sourceMappingURL=tapRepoService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tapRepoService.js","sourceRoot":"","sources":["../../src/services/tapRepoService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HiPSDescriptor } from '../model/hips/HiPSDescriptor.js';
|
|
2
|
+
export interface HiPSItem {
|
|
3
|
+
id: number;
|
|
4
|
+
hipsDescriptor: HiPSDescriptor | null;
|
|
5
|
+
provider: string;
|
|
6
|
+
hips: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface HiPSNodeEntry {
|
|
9
|
+
hips_service_url: string;
|
|
10
|
+
hips_release_date?: string;
|
|
11
|
+
creator_did?: string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAEhE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,cAAc,GAAG,IAAI,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
type UniformNames = {
|
|
2
|
+
vertex_color: string;
|
|
3
|
+
m_perspective: string;
|
|
4
|
+
m_model_view: string;
|
|
5
|
+
};
|
|
6
|
+
type AttributeNames = {
|
|
7
|
+
vertex_pos: string;
|
|
8
|
+
vertex_selected: string;
|
|
9
|
+
point_size: string;
|
|
10
|
+
point_hue: string;
|
|
11
|
+
};
|
|
12
|
+
type Locations = {
|
|
13
|
+
pMatrix: WebGLUniformLocation | null;
|
|
14
|
+
mvMatrix: WebGLUniformLocation | null;
|
|
15
|
+
color: WebGLUniformLocation | null;
|
|
16
|
+
position: number;
|
|
17
|
+
hovered: number;
|
|
18
|
+
pointSize: number;
|
|
19
|
+
brightness: number;
|
|
20
|
+
};
|
|
21
|
+
export declare class CatalogueShaderProgram {
|
|
22
|
+
private _shaderProgram;
|
|
23
|
+
private _vertexShader;
|
|
24
|
+
private _fragmentShader;
|
|
25
|
+
readonly gl_uniforms: UniformNames;
|
|
26
|
+
readonly gl_attributes: AttributeNames;
|
|
27
|
+
readonly locations: Locations;
|
|
28
|
+
private _webgl;
|
|
29
|
+
constructor(webgl: WebGL2RenderingContext);
|
|
30
|
+
get shaderProgram(): WebGLProgram;
|
|
31
|
+
private initShaders;
|
|
32
|
+
enableShaders(pMatrix: Float32Array, modelMatrix: Float32Array, viewMatrix: Float32Array): void;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=CatalogueShaderProgram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CatalogueShaderProgram.d.ts","sourceRoot":"","sources":["../../src/shader/CatalogueShaderProgram.ts"],"names":[],"mappings":"AAMA,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACpC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACrC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAGD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,eAAe,CAAc;IAErC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAA;IAClC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,OAAO,CAAC,MAAM,CAAyB;gBAG3B,KAAK,EAAE,sBAAsB;IA0BzC,IAAI,aAAa,IAAI,YAAY,CAQhC;IAED,OAAO,CAAC,WAAW;IA2DnB,aAAa,CACX,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,YAAY,GACvB,IAAI;CAuBR"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// HiPSShaderProgram.ts
|
|
2
|
+
import { mat4 } from 'gl-matrix';
|
|
3
|
+
import ShaderManager from './ShaderManager.js';
|
|
4
|
+
// export default class CatalogueShaderProgram {
|
|
5
|
+
export class CatalogueShaderProgram {
|
|
6
|
+
_shaderProgram;
|
|
7
|
+
_vertexShader;
|
|
8
|
+
_fragmentShader;
|
|
9
|
+
gl_uniforms;
|
|
10
|
+
gl_attributes;
|
|
11
|
+
locations;
|
|
12
|
+
_webgl;
|
|
13
|
+
constructor(webgl) {
|
|
14
|
+
this._webgl = webgl;
|
|
15
|
+
this.gl_uniforms = {
|
|
16
|
+
vertex_color: 'u_fragcolor',
|
|
17
|
+
m_perspective: 'uPMatrix',
|
|
18
|
+
m_model_view: 'uMVMatrix'
|
|
19
|
+
};
|
|
20
|
+
this.gl_attributes = {
|
|
21
|
+
vertex_pos: 'aCatPosition',
|
|
22
|
+
vertex_selected: 'a_selected',
|
|
23
|
+
point_size: 'a_pointsize',
|
|
24
|
+
point_hue: 'a_brightness'
|
|
25
|
+
};
|
|
26
|
+
this.locations = {
|
|
27
|
+
pMatrix: null,
|
|
28
|
+
mvMatrix: null,
|
|
29
|
+
color: null,
|
|
30
|
+
position: -1,
|
|
31
|
+
hovered: -1,
|
|
32
|
+
pointSize: -1,
|
|
33
|
+
brightness: -1
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
get shaderProgram() {
|
|
37
|
+
if (!this._shaderProgram) {
|
|
38
|
+
// const gl = global.gl as GL
|
|
39
|
+
const gl = this._webgl;
|
|
40
|
+
this._shaderProgram = gl.createProgram();
|
|
41
|
+
this.initShaders();
|
|
42
|
+
}
|
|
43
|
+
return this._shaderProgram;
|
|
44
|
+
}
|
|
45
|
+
initShaders() {
|
|
46
|
+
// const gl = global.gl as GL
|
|
47
|
+
const gl = this._webgl;
|
|
48
|
+
const fragmentShaderStr = ShaderManager.catalogueFS();
|
|
49
|
+
this._fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
|
|
50
|
+
gl.shaderSource(this._fragmentShader, fragmentShaderStr);
|
|
51
|
+
gl.compileShader(this._fragmentShader);
|
|
52
|
+
console.log('FS log:', gl.getShaderInfoLog(this._fragmentShader) || 'ok');
|
|
53
|
+
if (!gl.getShaderParameter(this._fragmentShader, gl.COMPILE_STATUS)) {
|
|
54
|
+
alert(gl.getShaderInfoLog(this._fragmentShader) || 'Fragment shader compile error');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const vertexShaderStr = ShaderManager.catalogueVS();
|
|
58
|
+
this._vertexShader = gl.createShader(gl.VERTEX_SHADER);
|
|
59
|
+
gl.shaderSource(this._vertexShader, vertexShaderStr);
|
|
60
|
+
gl.compileShader(this._vertexShader);
|
|
61
|
+
console.log('VS log:', gl.getShaderInfoLog(this._vertexShader) || 'ok');
|
|
62
|
+
if (!gl.getShaderParameter(this._vertexShader, gl.COMPILE_STATUS)) {
|
|
63
|
+
alert(gl.getShaderInfoLog(this._vertexShader) || 'Vertex shader compile error');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
gl.attachShader(this.shaderProgram, this._vertexShader);
|
|
67
|
+
gl.attachShader(this.shaderProgram, this._fragmentShader);
|
|
68
|
+
gl.linkProgram(this.shaderProgram);
|
|
69
|
+
if (!gl.getProgramParameter(this.shaderProgram, gl.LINK_STATUS)) {
|
|
70
|
+
alert('Could not initialise shaders');
|
|
71
|
+
}
|
|
72
|
+
// shaderUtility.useProgram(this.shaderProgram)
|
|
73
|
+
gl.useProgram(this.shaderProgram);
|
|
74
|
+
this.locations.position = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.vertex_pos);
|
|
75
|
+
this.locations.hovered = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.vertex_selected);
|
|
76
|
+
this.locations.pointSize = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.point_size);
|
|
77
|
+
this.locations.brightness = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.point_hue);
|
|
78
|
+
this.locations.color = gl.getUniformLocation(this.shaderProgram, this.gl_uniforms.vertex_color);
|
|
79
|
+
}
|
|
80
|
+
enableShaders(pMatrix, modelMatrix, viewMatrix) {
|
|
81
|
+
// const gl = global.gl as GL
|
|
82
|
+
const gl = this._webgl;
|
|
83
|
+
// shaderUtility.useProgram(this.shaderProgram)
|
|
84
|
+
gl.useProgram(this.shaderProgram);
|
|
85
|
+
this.locations.pMatrix = gl.getUniformLocation(this.shaderProgram, this.gl_uniforms.m_perspective);
|
|
86
|
+
this.locations.mvMatrix = gl.getUniformLocation(this.shaderProgram, this.gl_uniforms.m_model_view);
|
|
87
|
+
let mvMatrix = mat4.create();
|
|
88
|
+
mvMatrix = mat4.multiply(mvMatrix, viewMatrix, modelMatrix);
|
|
89
|
+
gl.uniformMatrix4fv(this.locations.pMatrix, false, pMatrix);
|
|
90
|
+
gl.uniformMatrix4fv(this.locations.mvMatrix, false, mvMatrix);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// export const catalogueShaderProgram = new CatalogueShaderProgram()
|
|
94
|
+
//# sourceMappingURL=CatalogueShaderProgram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CatalogueShaderProgram.js","sourceRoot":"","sources":["../../src/shader/CatalogueShaderProgram.ts"],"names":[],"mappings":"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"}
|