@wwtelescope/webclient 6.3.5 → 6.4.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/CHANGELOG.md +12 -0
- package/app.js +9 -7
- package/dataproxy/Places.js +7 -5
- package/dataproxy/SearchData.js +68 -162
- package/factories/SearchUtil.js +102 -124
- package/factories/Util.js +17 -5
- package/package.json +1 -1
- package/assets/webclient-explore-root.wtml +0 -21
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
# @wwtelescope/webclient 6.4.0 (2022-07-12)
|
|
2
|
+
|
|
3
|
+
- Finally update this to expose all of our new datasets (@pkgw, #353)! These
|
|
4
|
+
have been managed in the [wwt-core-catalogs][wcc] repository, but not actually
|
|
5
|
+
exposed in the production webclient until now. The update required us to
|
|
6
|
+
rebuild the webclient’s precompiled search index, which took a lot of
|
|
7
|
+
infrastructural work. That is now working.
|
|
8
|
+
- Fix a formatting bug that could lead to the seconds value being 60 (@Carifio24, #351).
|
|
9
|
+
|
|
10
|
+
[wcc]: https://github.com/WorldWideTelescope/wwt-core-catalogs/
|
|
11
|
+
|
|
12
|
+
|
|
1
13
|
# @wwtelescope/webclient 6.3.5 (2022-05-19)
|
|
2
14
|
|
|
3
15
|
- index.html: load pako and uuid early for updated webgl-engine
|
package/app.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
// Note that, unlike the other source files, this file is processed through
|
|
26
26
|
// Grunt's templating system. This is done so that we can insert various
|
|
27
|
-
// build-time parameters. Note also that the variables here must references to
|
|
27
|
+
// build-time parameters. Note also that the variables here must be references to
|
|
28
28
|
// the Grunt config object; the templating in index.html uses different
|
|
29
29
|
// variables.
|
|
30
30
|
|
|
@@ -46,7 +46,7 @@ var wwt = {
|
|
|
46
46
|
'wwtControllers',
|
|
47
47
|
'ngCookies',
|
|
48
48
|
'angular-intro'
|
|
49
|
-
]).config(function($sceDelegateProvider) {
|
|
49
|
+
]).config(function ($sceDelegateProvider) {
|
|
50
50
|
$sceDelegateProvider.resourceUrlWhitelist([
|
|
51
51
|
// same origin
|
|
52
52
|
'self',
|
|
@@ -63,13 +63,15 @@ var wwt = {
|
|
|
63
63
|
controllers: angular.module('wwtControllers', [])
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
$(window).on('load', function() {
|
|
66
|
+
$(window).on('load', function () {
|
|
67
67
|
// Load search data after everything else.
|
|
68
68
|
//
|
|
69
|
-
// Historically the search data were managed in the webclient repository,
|
|
70
|
-
//
|
|
71
|
-
//
|
|
69
|
+
// Historically the search data were managed in the webclient repository, but
|
|
70
|
+
// they're really a "core" asset, since they index the core WWT datasets.
|
|
71
|
+
//
|
|
72
|
+
// The JS file here sets a global `wwt.searchData` variable, which is
|
|
73
|
+
// processed in the `init()` function defined in `dataproxy/SearchData.js`.
|
|
72
74
|
var scr = document.createElement('script');
|
|
73
|
-
scr.setAttribute("src", wwtlib.URLHelpers.singleton.coreStaticUrl('data/
|
|
75
|
+
scr.setAttribute("src", wwtlib.URLHelpers.singleton.coreStaticUrl('data/searchdata_v2.min.js'));
|
|
74
76
|
document.getElementsByTagName("head")[0].appendChild(scr);
|
|
75
77
|
});
|
package/dataproxy/Places.js
CHANGED
|
@@ -17,8 +17,8 @@ wwt.app.factory(
|
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
var root,
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
rootFolders,
|
|
21
|
+
openCollectionsFolder;
|
|
22
22
|
|
|
23
23
|
function getRoot() {
|
|
24
24
|
var deferred = $q.defer();
|
|
@@ -79,8 +79,8 @@ wwt.app.factory(
|
|
|
79
79
|
item.isPlanet = item.get_dataSetType() === 1;
|
|
80
80
|
}
|
|
81
81
|
if (typeof item.get_projection == 'function'
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
&& typeof item.get_extension == 'function') {
|
|
83
|
+
item.isCatalogHips = item.get_projection() === 7 && item.get_extension() === ".tsv";
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
util.rewritePlaceUrls(item);
|
|
@@ -100,7 +100,9 @@ wwt.app.factory(
|
|
|
100
100
|
|
|
101
101
|
root = wwt.wc.createFolder();
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
// Resolving relative to window.location helps us deal with http/https
|
|
104
|
+
// here:
|
|
105
|
+
var url = new URL(wwt.coreStaticUrlPrefix + 'wwtweb/catalog.aspx?W=explorerootweb', window.location).toString();
|
|
104
106
|
|
|
105
107
|
root.loadFromUrl(url, function () {
|
|
106
108
|
var collection;
|
package/dataproxy/SearchData.js
CHANGED
|
@@ -1,38 +1,27 @@
|
|
|
1
1
|
wwt.app.factory(
|
|
2
2
|
'SearchData',
|
|
3
3
|
[
|
|
4
|
-
'$http',
|
|
5
4
|
'$q',
|
|
6
|
-
'$timeout',
|
|
7
|
-
'Places',
|
|
8
5
|
'Util',
|
|
9
6
|
|
|
10
|
-
function ($
|
|
7
|
+
function ($q, util) {
|
|
11
8
|
var api = {
|
|
12
9
|
getData: getData,
|
|
13
10
|
getIndex: getIndex
|
|
14
11
|
};
|
|
15
12
|
|
|
16
13
|
var data,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
searchIndex = {},
|
|
15
|
+
initPromise,
|
|
16
|
+
constellations = [];
|
|
20
17
|
var deferredInit = $q.defer();
|
|
21
|
-
var allDataDeferred = $q.defer();
|
|
22
|
-
var allDataPromise = (function(){return allDataDeferred.promise;})();
|
|
23
18
|
|
|
24
|
-
function getData(
|
|
19
|
+
function getData() {
|
|
25
20
|
var deferred = $q.defer();
|
|
26
21
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
31
|
-
} else {
|
|
32
|
-
initPromise.then(function () {
|
|
33
|
-
deferred.resolve(data);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
22
|
+
initPromise.then(function () {
|
|
23
|
+
deferred.resolve(data);
|
|
24
|
+
});
|
|
36
25
|
|
|
37
26
|
return deferred.promise;
|
|
38
27
|
};
|
|
@@ -50,67 +39,86 @@
|
|
|
50
39
|
var imageset_id = 100;
|
|
51
40
|
|
|
52
41
|
var init = function () {
|
|
53
|
-
|
|
42
|
+
// The special `wwt.searchData` global is assigned in the JS file that
|
|
43
|
+
// the main webclient app loads asynchronously (see `app.js`).
|
|
44
|
+
if (!wwt.searchData) {
|
|
45
|
+
setTimeout(init, 333);
|
|
46
|
+
} else {
|
|
47
|
+
// searchDataIndexed is used in `factories/SearchUtil.js`.
|
|
54
48
|
wwt.searchDataIndexed = [];
|
|
49
|
+
|
|
55
50
|
data = wwt.searchData;
|
|
56
51
|
var start = new Date();
|
|
57
52
|
|
|
58
53
|
$.each(data.Constellations, function (i, item) {
|
|
59
|
-
/*if (item.name === 'SolarSystem') {
|
|
60
|
-
item.places = ssData;
|
|
61
|
-
return;
|
|
62
|
-
}*/
|
|
63
54
|
constellations[i] = item.name;
|
|
64
55
|
|
|
65
56
|
$.each(item.places, function (j, place) {
|
|
66
57
|
var fgi = place.fgi,
|
|
67
|
-
|
|
58
|
+
imgSet;
|
|
68
59
|
|
|
69
60
|
if (fgi) {
|
|
70
61
|
imageset_id++;
|
|
71
62
|
|
|
63
|
+
var band_pass = (fgi.bp !== undefined) ? fgi.bp : wwtlib.BandPass.visible;
|
|
64
|
+
var projection = (fgi.pr !== undefined) ? fgi.pr : wwtlib.ProjectionType.tan;
|
|
65
|
+
var base_tile_level = (fgi.bl !== undefined) ? fgi.bl : 0;
|
|
66
|
+
var file_type = (fgi.ft !== undefined) ? fgi.ft : ".png";
|
|
67
|
+
var tile_levels = (fgi.lv !== undefined) ? fgi.lv : 4;
|
|
68
|
+
var bottoms_up = (fgi.bu !== undefined) ? fgi.bu : false;
|
|
69
|
+
var quad_tree_map = (fgi.q !== undefined) ? fgi.q : "";
|
|
70
|
+
var offset_x = (fgi.oX !== undefined) ? fgi.oX : 0;
|
|
71
|
+
var offset_y = (fgi.oY !== undefined) ? fgi.oY : 0;
|
|
72
|
+
var default_set = (fgi.ds !== undefined) ? fgi.ds : false; // "StockSet" in XML
|
|
73
|
+
var rotation = (fgi.r !== undefined) ? fgi.r : 0;
|
|
74
|
+
var width_factor = (fgi.wf !== undefined) ? fgi.wf : 2;
|
|
75
|
+
|
|
72
76
|
imgSet = wwtlib.Imageset.create(
|
|
73
|
-
fgi.n
|
|
74
|
-
fgi.u
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
imageset_id
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
null
|
|
82
|
-
fgi.bd
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
fgi.cX
|
|
87
|
-
fgi.cY
|
|
88
|
-
|
|
89
|
-
true
|
|
90
|
-
fgi.tu
|
|
91
|
-
|
|
92
|
-
false
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
fgi.ct
|
|
97
|
-
fgi.cu
|
|
98
|
-
'',
|
|
99
|
-
|
|
100
|
-
|
|
77
|
+
fgi.n, // name
|
|
78
|
+
fgi.u, // url
|
|
79
|
+
wwtlib.ImageSetType.sky, // data_set_type -- never changes (for now?)
|
|
80
|
+
band_pass,
|
|
81
|
+
projection,
|
|
82
|
+
imageset_id, // imageset id
|
|
83
|
+
base_tile_level,
|
|
84
|
+
tile_levels,
|
|
85
|
+
null, // tile_size
|
|
86
|
+
fgi.bd, // baseTileDegrees
|
|
87
|
+
file_type,
|
|
88
|
+
bottoms_up,
|
|
89
|
+
quad_tree_map,
|
|
90
|
+
fgi.cX, // centerX
|
|
91
|
+
fgi.cY, // centerY
|
|
92
|
+
rotation,
|
|
93
|
+
true, // sparse
|
|
94
|
+
fgi.tu, // thumbnailUrl,
|
|
95
|
+
default_set,
|
|
96
|
+
false, // elevationModel
|
|
97
|
+
width_factor,
|
|
98
|
+
offset_x,
|
|
99
|
+
offset_y,
|
|
100
|
+
fgi.ct, // creditsText
|
|
101
|
+
fgi.cu, // creditsUrl
|
|
102
|
+
'', // demUrl
|
|
103
|
+
'', // altUrl
|
|
104
|
+
0, // meanRadius
|
|
105
|
+
null // referenceFrame
|
|
101
106
|
);
|
|
102
107
|
|
|
103
108
|
util.rewritePlaceUrls(imgSet);
|
|
104
109
|
}
|
|
105
110
|
|
|
111
|
+
var classification = (place.c !== undefined) ? place.c : wwtlib.Classification.unidentified;
|
|
112
|
+
var zoom_factor = (place.z !== undefined) ? place.z : -1;
|
|
113
|
+
|
|
106
114
|
var pl = wwtlib.Place.create(
|
|
107
|
-
place.n
|
|
108
|
-
place.d
|
|
109
|
-
place.r
|
|
110
|
-
|
|
111
|
-
item.name
|
|
112
|
-
|
|
113
|
-
|
|
115
|
+
place.n, // name
|
|
116
|
+
place.d, // dec
|
|
117
|
+
place.r, // ra
|
|
118
|
+
classification,
|
|
119
|
+
item.name, // constellation
|
|
120
|
+
wwtlib.ImageSetType.sky, // type -- never changes (for now?)
|
|
121
|
+
zoom_factor,
|
|
114
122
|
);
|
|
115
123
|
|
|
116
124
|
if (imgSet) {
|
|
@@ -134,28 +142,7 @@
|
|
|
134
142
|
|
|
135
143
|
var end = new Date();
|
|
136
144
|
util.log('parsed places in ' + (end.valueOf() - start.valueOf()) + 'ms', data);
|
|
137
|
-
|
|
138
|
-
var urlbase = wwtlib.URLHelpers.singleton.coreStaticUrl('data/client_v6/');
|
|
139
|
-
|
|
140
|
-
importWtml(urlbase + 'Wise.wtml').then(function () {
|
|
141
|
-
//console.log('wise loaded');
|
|
142
|
-
importWtml(urlbase + 'Hubble.wtml').then(function () {
|
|
143
|
-
//console.log('hubble loaded');
|
|
144
|
-
importWtml(urlbase + 'ESO.wtml').then(function () {
|
|
145
|
-
//console.log('eso loaded');
|
|
146
|
-
importWtml(urlbase + 'Chandra.wtml').then(function () {
|
|
147
|
-
//console.log('chandra loaded');
|
|
148
|
-
importWtml(urlbase + 'Spitzer.wtml').then(function () {
|
|
149
|
-
allDataDeferred.resolve(true);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
|
|
156
145
|
deferredInit.resolve(data);
|
|
157
|
-
} else {
|
|
158
|
-
setTimeout(init, 333);
|
|
159
146
|
}
|
|
160
147
|
|
|
161
148
|
return deferredInit.promise;
|
|
@@ -194,87 +181,6 @@
|
|
|
194
181
|
});
|
|
195
182
|
};
|
|
196
183
|
|
|
197
|
-
function importWtml(wtmlPath) {
|
|
198
|
-
var deferred = $q.defer();
|
|
199
|
-
|
|
200
|
-
$.ajax({
|
|
201
|
-
url: wtmlPath + '?v=' + $('body').data('resVersion')
|
|
202
|
-
}).done(function () {
|
|
203
|
-
var wtml = $($.parseXML(arguments[0]));
|
|
204
|
-
|
|
205
|
-
wtml.find('Place').each(function (i, place) {
|
|
206
|
-
place = $(place);
|
|
207
|
-
var constellation, ra = parseFloat(place.attr('RA')), dec = parseFloat(place.attr('Dec'));
|
|
208
|
-
|
|
209
|
-
if (ra !== 0 || dec !== 0) {
|
|
210
|
-
constellation = wwtlib.Constellations.containment.findConstellationForPoint(ra, dec);
|
|
211
|
-
|
|
212
|
-
var fgi = place.find('ImageSet').length ? place.find('ImageSet') : null;
|
|
213
|
-
|
|
214
|
-
var wwtPlace = wwtlib.Place.create(
|
|
215
|
-
place.attr('Name'),
|
|
216
|
-
dec,
|
|
217
|
-
ra,
|
|
218
|
-
place.attr('DataSetType'),
|
|
219
|
-
constellation,
|
|
220
|
-
fgi ? util.getImageSetType(fgi.attr('DataSetType')) : 2, //type
|
|
221
|
-
parseFloat(place.find('ZoomLevel')) //zoomfactor
|
|
222
|
-
);
|
|
223
|
-
|
|
224
|
-
if (fgi != null) {
|
|
225
|
-
imageset_id++;
|
|
226
|
-
|
|
227
|
-
var imgset = wwtlib.Imageset.create(
|
|
228
|
-
fgi.attr('Name'),
|
|
229
|
-
fgi.attr('Url'),
|
|
230
|
-
util.getImageSetType(fgi.attr('DataSetType')),
|
|
231
|
-
fgi.attr('BandPass'),
|
|
232
|
-
wwtlib.ProjectionType[fgi.attr('Projection').toLowerCase()],
|
|
233
|
-
imageset_id, //imagesetid
|
|
234
|
-
parseInt(fgi.attr('BaseTileLevel')),
|
|
235
|
-
parseInt(fgi.attr('TileLevels')),
|
|
236
|
-
null, //tilesize
|
|
237
|
-
parseFloat(fgi.attr('BaseDegreesPerTile')),
|
|
238
|
-
fgi.attr('FileType'),
|
|
239
|
-
fgi.attr('BottomsUp') === 'True',
|
|
240
|
-
'', //quadTreeTileMap (I need to find a wtml file that has this and check spelling of the attr)
|
|
241
|
-
parseFloat(fgi.attr('CenterX')),
|
|
242
|
-
parseFloat(fgi.attr('CenterY')),
|
|
243
|
-
parseFloat(fgi.attr('Rotation')),
|
|
244
|
-
true, //sparse
|
|
245
|
-
fgi.find('ThumbnailUrl').text(), //thumbnailUrl,
|
|
246
|
-
false, //defaultSet,
|
|
247
|
-
false, //elevationModel
|
|
248
|
-
parseFloat(fgi.attr('WidthFactor')), //widthFactor,
|
|
249
|
-
parseFloat(fgi.attr('OffsetX')),
|
|
250
|
-
parseFloat(fgi.attr('OffsetY')),
|
|
251
|
-
fgi.find('Credits').text(),
|
|
252
|
-
fgi.find('CreditsUrl').text(),
|
|
253
|
-
'', '',
|
|
254
|
-
0, //meanRadius
|
|
255
|
-
null
|
|
256
|
-
);
|
|
257
|
-
|
|
258
|
-
util.rewritePlaceUrls(imgset);
|
|
259
|
-
wwtPlace.set_studyImageset(imgset);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
indexPlaceNames(wwtPlace);
|
|
263
|
-
|
|
264
|
-
var cIndex = constellations.indexOf(constellation);
|
|
265
|
-
var constellationPlaces = wwt.searchData.Constellations[cIndex].places;
|
|
266
|
-
wwtPlace.guid = cIndex + '.' + constellationPlaces.length;
|
|
267
|
-
util.rewritePlaceUrls(wwtPlace);
|
|
268
|
-
constellationPlaces.push(wwtPlace);
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
deferred.resolve(true);
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
return deferred.promise;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
184
|
initPromise = init();
|
|
279
185
|
|
|
280
186
|
return api;
|
package/factories/SearchUtil.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
wwt.app.factory(
|
|
2
2
|
'SearchUtil',
|
|
3
3
|
[
|
|
4
4
|
'SearchData',
|
|
@@ -8,155 +8,133 @@
|
|
|
8
8
|
|
|
9
9
|
function (searchDataService, $q, util, $rootScope) {
|
|
10
10
|
var api = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
runSearch: runSearch,
|
|
12
|
+
findNearbyObjects: findNearbyObjects,
|
|
13
|
+
getPlaceById: getPlaceById
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
function runSearch(q) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
17
|
+
var deferred = $q.defer();
|
|
18
|
+
|
|
19
|
+
searchDataService.getIndex().then(function (d) {
|
|
20
|
+
var searchData = wwt.searchDataIndexed;
|
|
21
|
+
var foundPlaces = [];
|
|
22
|
+
|
|
23
|
+
if (q.length < 2) {
|
|
24
|
+
foundPlaces = searchData[q];
|
|
25
|
+
} else {
|
|
26
|
+
var subset = searchData[q.charAt(0).toLowerCase()];
|
|
27
|
+
|
|
28
|
+
$.each(subset, function (i, place) {
|
|
29
|
+
var names = place.get_names();
|
|
30
|
+
var placeChosen = false;
|
|
31
|
+
|
|
32
|
+
$.each(names, function (j, name) {
|
|
33
|
+
if (q.indexOf(' ') === -1 && name.split(' ').length > 1) {
|
|
34
|
+
var words = name.split(' ');
|
|
35
|
+
|
|
36
|
+
$.each(words, function (k, word) {
|
|
37
|
+
if (word.toLowerCase().indexOf(q.toLowerCase()) === 0 && !placeChosen) {
|
|
38
|
+
foundPlaces.push(place);
|
|
39
|
+
placeChosen = true;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
} else if (name.toLowerCase().indexOf(q.toLowerCase()) === 0 && !placeChosen) {
|
|
43
|
+
foundPlaces.push(place);
|
|
44
|
+
placeChosen = true;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
deferred.resolve(foundPlaces.sort(sortByImagery));
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
return deferred.promise;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
var sortByImagery = function(p1, p2) {
|
|
57
|
-
|
|
56
|
+
var sortByImagery = function (p1, p2) {
|
|
57
|
+
return p1.fromCenter - p2.fromCenter;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
// This interface has serious issues -- the mechanism for constructing
|
|
61
|
+
// place IDs is based on indices into the search data, which are *not*
|
|
62
|
+
// things that ought to be required to stay stable over time. A different
|
|
63
|
+
// approach should be used.
|
|
60
64
|
function getPlaceById(id) {
|
|
61
65
|
var deferred = $q.defer();
|
|
62
66
|
|
|
63
|
-
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
var p = d.Constellations[constellationIndex].places[placeIndex];
|
|
70
|
-
if (p) {
|
|
71
|
-
deferred2.resolve(p);
|
|
72
|
-
}else{
|
|
73
|
-
deferred2.resolve(null);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
67
|
+
searchDataService.getData(all).then(function (d) {
|
|
68
|
+
var constellationIndex = parseInt(id.split('.')[0]);
|
|
69
|
+
var placeIndex = parseInt(id.split('.')[1]);
|
|
70
|
+
var p = d.Constellations[constellationIndex].places[placeIndex];
|
|
71
|
+
deferred.resolve(p || null);
|
|
72
|
+
});
|
|
76
73
|
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
return deferred.promise;
|
|
75
|
+
}
|
|
79
76
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
deferred.resolve(p);
|
|
83
|
-
} else {
|
|
84
|
-
console.log('wait for full');
|
|
77
|
+
function findNearbyObjects(args) {
|
|
78
|
+
var deferred = $q.defer();
|
|
85
79
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
80
|
+
searchDataService.getData().then(function (d) {
|
|
81
|
+
var searchData = wwt.searchData;
|
|
82
|
+
|
|
83
|
+
if ($rootScope.viewport && (args.lookAt === 'Sky' || args.lookAt === 'SolarSystem')) {
|
|
84
|
+
var ulCoords = args.singleton.getCoordinatesForScreenPoint(0, 0);
|
|
85
|
+
var corner = wwtlib.Coordinates.raDecTo3d(ulCoords.x, ulCoords.y);
|
|
86
|
+
var center = wwtlib.Coordinates.raDecTo3d($rootScope.viewport.RA, $rootScope.viewport.Dec);
|
|
87
|
+
var dist = wwtlib.Vector3d.subtractVectors(corner, center).length();
|
|
88
|
+
var constellation = args.singleton.constellation;
|
|
89
|
+
var constellationPlaces, ssPlaces;
|
|
90
|
+
|
|
91
|
+
$.each(searchData.Constellations, function (i, item) {
|
|
92
|
+
if (item.name === constellation) {
|
|
93
|
+
constellationPlaces = item.places;
|
|
94
|
+
} else if (item.name === 'SolarSystem') {
|
|
95
|
+
ssPlaces = item.places;
|
|
91
96
|
}
|
|
92
97
|
});
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
98
|
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
if (args.lookAt === 'SolarSystem') {
|
|
100
|
+
deferred.resolve(ssPlaces);
|
|
101
|
+
}
|
|
98
102
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
searchDataService.getData().then(function(d) {
|
|
103
|
-
var searchData = wwt.searchData;
|
|
104
|
-
|
|
105
|
-
if ($rootScope.viewport && (args.lookAt === 'Sky' || args.lookAt === 'SolarSystem')) {
|
|
106
|
-
var ulCoords = args.singleton.getCoordinatesForScreenPoint(0, 0);
|
|
107
|
-
var corner = wwtlib.Coordinates.raDecTo3d(ulCoords.x, ulCoords.y);
|
|
108
|
-
var center = wwtlib.Coordinates.raDecTo3d($rootScope.viewport.RA, $rootScope.viewport.Dec);
|
|
109
|
-
var dist = wwtlib.Vector3d.subtractVectors(corner, center).length();
|
|
110
|
-
var constellation = args.singleton.constellation;
|
|
111
|
-
var constellationPlaces, ssPlaces;
|
|
112
|
-
|
|
113
|
-
$.each(searchData.Constellations, function(i, item) {
|
|
114
|
-
if (item.name === constellation) {
|
|
115
|
-
constellationPlaces = item.places;
|
|
116
|
-
} else if (item.name === 'SolarSystem') {
|
|
117
|
-
ssPlaces = item.places;
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
if (args.lookAt === 'SolarSystem') {
|
|
122
|
-
deferred.resolve(ssPlaces);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
var searchPlaces = ssPlaces.concat(constellationPlaces);
|
|
126
|
-
var results = [];
|
|
103
|
+
var searchPlaces = ssPlaces.concat(constellationPlaces);
|
|
104
|
+
var results = [];
|
|
127
105
|
var solsys = [];
|
|
128
106
|
var imgsets = [];
|
|
129
107
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
108
|
+
$.each(searchPlaces, function (i, place) {
|
|
109
|
+
if (place && place.get_name() !== 'Earth') {
|
|
110
|
+
try {
|
|
111
|
+
var placeDist = wwtlib.Vector3d.subtractVectors(place.get_location3d(), center);
|
|
134
112
|
|
|
135
|
-
|
|
136
|
-
|
|
113
|
+
if (dist > placeDist.length()) {
|
|
114
|
+
place.fromCenter = placeDist.length();
|
|
137
115
|
|
|
138
|
-
|
|
139
|
-
|
|
116
|
+
if (place.get_constellation() === 'SolarSystem') {
|
|
117
|
+
solsys.push(place)
|
|
140
118
|
} else if (place.get_studyImageset()) {
|
|
141
|
-
|
|
119
|
+
imgsets.push(place);
|
|
142
120
|
} else {
|
|
143
121
|
results.push(place);
|
|
144
122
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
123
|
+
}
|
|
124
|
+
} catch (er) {
|
|
125
|
+
util.log(er, place);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
solsys = solsys.sort(sortByImagery);
|
|
131
|
+
deferred.resolve(solsys.concat(imgsets.sort(sortByImagery), results.sort(sortByImagery)));
|
|
132
|
+
} else {
|
|
133
|
+
deferred.resolve([]);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
return deferred.promise;
|
|
160
138
|
}
|
|
161
139
|
|
|
162
140
|
return api;
|
package/factories/Util.js
CHANGED
|
@@ -128,6 +128,22 @@
|
|
|
128
128
|
var minutes = Math.floor(remainder);
|
|
129
129
|
var seconds = (remainder - minutes) * 60;
|
|
130
130
|
|
|
131
|
+
if (isNaN(extraPrecision)) {
|
|
132
|
+
extraPrecision = 0;
|
|
133
|
+
}
|
|
134
|
+
var secondsStr = seconds.toFixed(extraPrecision);
|
|
135
|
+
|
|
136
|
+
if (secondsStr.startsWith('60')) {
|
|
137
|
+
seconds = 0;
|
|
138
|
+
secondsStr = seconds.toFixed(extraPrecision);
|
|
139
|
+
minutes += 1;
|
|
140
|
+
|
|
141
|
+
if (minutes == 60) {
|
|
142
|
+
minutes = 0;
|
|
143
|
+
hourlike += 1;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
131
147
|
values[0] = hourlike.toFixed(0);
|
|
132
148
|
if (hourlike < 10) {
|
|
133
149
|
values[0] = '0' + values[0];
|
|
@@ -138,11 +154,7 @@
|
|
|
138
154
|
values[1] = '0' + values[1];
|
|
139
155
|
}
|
|
140
156
|
|
|
141
|
-
|
|
142
|
-
extraPrecision = 0;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
values[2] = seconds.toFixed(extraPrecision);
|
|
157
|
+
values[2] = secondsStr;
|
|
146
158
|
if (seconds < 10) {
|
|
147
159
|
values[2] = '0' + values[2];
|
|
148
160
|
}
|
package/package.json
CHANGED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?>
|
|
2
|
-
<Folder Name="Collections" Group="Explorer" >
|
|
3
|
-
<Folder Name="Latest Imagery" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=vampfeeds" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=folder" />
|
|
4
|
-
<Folder Name="Constellations" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=constellations" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=constellations" />
|
|
5
|
-
<Folder Name="Solar System (Sky)" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=solarsystemsky" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=solarsystem" />
|
|
6
|
-
<Folder Name="All-Sky Surveys" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=surveys" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=aitoff" />
|
|
7
|
-
<Folder Name="HiPS Surveys" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=hips" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=aitoff" />
|
|
8
|
-
<Folder Name="Spitzer Studies" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=studiesspitzer" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=spitzer" />
|
|
9
|
-
<Folder Name="Chandra Studies" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=studieschandra" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=chandra" />
|
|
10
|
-
<Folder Name="Hubble Studies" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=studieshubble" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=hubble" />
|
|
11
|
-
<Folder Name="Astrophotography" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=astrophoto" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=egastrophoto" />
|
|
12
|
-
<Folder Name="SOFIA Studies" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=sofia_studies" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=nasa_sofia" />
|
|
13
|
-
<Folder Name="Radio Studies" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=studiesradio" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=radiostudies" />
|
|
14
|
-
<Folder Name="NOAO Studies" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=studiesnoao" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=noao" />
|
|
15
|
-
<Folder Name="Gemini Studies" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=geministudies" Group="Explorer" Searchable="True" Type="Sky" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=geminiobservatory" />
|
|
16
|
-
<Folder Name="Messier Catalog" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=messier" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=messier" />
|
|
17
|
-
<Folder Name="Planets/Moons" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=solarsystemsphere" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=solarsystem" />
|
|
18
|
-
<Folder Name="Earth" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=earth" Group="Explorer" Type="Planet" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=earthhybrid" />
|
|
19
|
-
<Folder Name="Mars" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=marsroot&v=2" Group="Explorer" Type="Planet" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=mars" />
|
|
20
|
-
<Folder Name="Panoramas" Url="http://www.worldwidetelescope.org/wwtweb/catalog.aspx?W=panos" Group="Explorer" Thumbnail="http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=pano" />
|
|
21
|
-
</Folder>
|