Moved grunt to root. Added bower and bower.json to manage external scripts. reconfigured gruntfile, package.json.

This commit is contained in:
thewebkid 2015-01-24 21:04:36 -08:00
Родитель f0fe60b876
Коммит 13fca4997b
18 изменённых файлов: 9746 добавлений и 869 удалений

Просмотреть файл

0
bootstrap/.gitattributes → .gitattributes поставляемый
Просмотреть файл

0
bootstrap/.gitignore → .gitignore поставляемый
Просмотреть файл

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="icon" href="favicon.ico"/>
<% if (Client == Clients.Html5 || Client == Clients.Mobile)
{ %>
<link href=css/webclient.css?v=<%= ResourcesVersion%> rel="stylesheet" />
<link href=css/webclient.min.css?v=<%= ResourcesVersion%> rel="stylesheet" />
<link href=css/angular-motion.css?v=<%= ResourcesVersion%> rel="stylesheet" />
<link href=//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css rel="stylesheet"/>
<link href=ext/introjs.css?v=<%= ResourcesVersion%> rel="stylesheet" />
@ -31,13 +31,13 @@
background: url(Images/finder-scope.png?v=<%= ResourcesVersion %>) no-repeat;
}
</style>
<%--<script data-main="sdk/sdkwrapper" src="sdk/require.js"></script>
<script type="text/javascript" src="<%=Debug?"":".min" %>.js"></script>--%>
<script type="text/javascript" src="<%=SDKLocation %>"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
<script src="ext/bootstrap<%= Debug ? "" : ".min"%>.js"></script>
<% if (Debug || DebugChrome)
{ %>
<script src="<%= ResourcesLocation %>/ext/jquery.js?v=<%= ResourcesVersion%>""></script>
<script src="<%= ResourcesLocation %>/ext/bootstrap.js?v=<%= ResourcesVersion%>""></script>
<script src="<%= ResourcesLocation %>/ext/angular.js?v=<%= ResourcesVersion%>"></script>
<script src="<%= ResourcesLocation %>/ext/angular-touch.js?v=<%= ResourcesVersion%>"></script>
<script src="<%= ResourcesLocation %>/ext/angular-route.js?v=<%= ResourcesVersion%>"></script>

388
Gruntfile.js Normal file
Просмотреть файл

@ -0,0 +1,388 @@
/**!
Gruntfile to perform wwt webclient pre-deploy tasks.
We compile webclient.less with bootstrap.less and
concat/minify all scripts together here.
Bootstrap upgrade note:
To upgrade bootstrap, copy the 4-color gradient out of the
mixins/gradients.less into the latest version.
webclient.less depends on that file.
**/
module.exports = function(grunt) {
'use strict';
// Force use of Unix newlines
grunt.util.linefeed = '\n';
RegExp.quote = function(string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
};
// Project configuration.
grunt.initConfig({
deployLoc: '../../wwtmvc5/WWTMVC5/webclient/',
pkg: grunt.file.readJSON('package.json'),
banner: '/**\n' +
'* WorldWide Telescope Web Client\n' +
'* Copyright 2014-2015 Microsoft Research\n' +
'* Developed by Jonathan Fay and Ron Gilchrist\n' +
'**/\n',
// Task configuration.
clean: {
deployLoc: '<%=deployLoc%>'
},
concat: {
options: {
banner: '<%= banner %>'
},
webclient: {
src: [
'ext/jquery.js',
'ext/bootstrap.js',
'ext/angular.js',
'ext/angular-touch.js',
'ext/angular-route.js',
'ext/angular-animate.js',
'ext/angular-cookies.js',
'ext/angular-strap.js',
'ext/angular-strap.tpl.js',
'ext/intro.js',
'ext/angular-intro.js',
'app.js',
'directives/Scroll.js',
'directives/Localize.js',
'directives/ContextMenu.js',
'factories/appstate.js',
'factories/localization.js',
'factories/FinderScope.js',
'factories/ThumbList.js',
'factories/Util.js',
'factories/UILibrary.js',
'factories/SearchUtil.js',
'factories/Skyball.js',
'factories/HashManager.js',
'dataproxy/Places.js',
'dataproxy/Tours.js',
'dataproxy/SearchData.js',
'dataproxy/Astrometry.js',
'controllers/ContextPanelController.js',
'controllers/MainController.js',
'controllers/IntroController.js',
'controllers/MobileNavController.js',
'controllers/LayerManagerController.js',
'controllers/tabs/AdsController.js',
'controllers/tabs/ExploreController.js',
'controllers/tabs/SearchController.js',
'controllers/tabs/SettingsController.js',
'controllers/tabs/ViewController.js',
'controllers/tabs/ToursController.js',
'controllers/modals/ShareController.js',
'controllers/modals/OpenItemController.js',
'controllers/modals/ObservingTimeController.js',
'controls/move.js',
'controls/util.js'
],
dest: 'wwtwebclient.js'
},
sdk: {
src: [
'sdk/ss.js',
'sdk/wwtlib.js'
],
dest: 'sdk/wwtsdk.js'
},
oldsdk: {
src: [
'sdk/old/mscorlib.debug.js',
'sdk/old/wwtlib.debug.js'
],
dest: 'sdk/old/wwtlib_full.js'
}
},
//remove the AMD dependancy from scriptsharp output
replace: {
wwtlib: {
src: ['sdk/wwtlib.js'],
dest: 'sdk/wwtlib.js',
replacements: [
{
from: "define('wwtlib', ['ss'], function(ss) {",
to: 'window.wwtlib = function(){'
}, {
from: 'return $exports;\n});',
to: 'return $exports;\n}();'
}
]
}
},
uglify: {
options: {
preserveComments: 'some',
banner: '<%= banner %>'
},
webclient: {
src: '<%= concat.webclient.dest %>',
dest: 'wwtwebclient.min.js'
},
searchData: {
src: 'searchdataraw.js',
dest: 'searchdata.min.js'
},
sdk: {
src: '<%= concat.sdk.dest %>',
dest: 'sdk/wwtsdk.min.js'
},
oldsdk: {
src: '<%= concat.oldsdk.dest %>',
dest: 'sdk/old/wwtlib_full.min.js'
}
},
less: {
compileCore: {
options: {
strictMath: true,
sourceMap: true,
outputSourceFiles: true,
sourceMapURL: 'webclient.css.map',
sourceMapFilename: 'css/webclient.css.map'
},
src: 'css/bootstrap.less',
dest: 'css/webclient.css'
}
},
autoprefixer: {
options: {
browsers: [
"Android 2.3",
"Android >= 4",
"Chrome >= 20",
"Firefox >= 24",
"Explorer >= 10",
"iOS >= 6",
"Opera >= 12",
"Safari >= 6"
]
},
core: {
options: {
map: true
},
src: 'css/webclient.css'
}
},
cssmin: {
options: {
compatibility: 'ie10',
keepSpecialComments: '*',
noAdvanced: true
},
minifyCore: {
src: 'css/webclient.css',
dest: 'css/webclient.min.css'
}
},
copy: {
vendor: {
files: [
{
expand: true,
flatten: true,
src: 'bower_components/jquery/dist/jquery.js',
dest: 'ext/'
}, {
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/bootstrap/dist/js/bootstrap.js'
}, {
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/angular/angular.js'
},
{
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/angular-touch/angular-touch.js'
},
{
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/angular-route/angular-route.js'
},
{
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/angular-animate/angular-animate.js',
},{
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/angular-cookies/angular-cookies.js',
}, {
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/angular-strap/dist/angular-strap.js',
}, {
dest: 'ext/',
expand: true,
flatten: true,
src: 'bower_components/angular-strap/dist/angular-strap.tpl.js'
}
]
},
webclient: {
files: [
{
cwd: 'App_Data/',
src: '**/*',
dest: '<%= deployLoc %>App_Data/',
expand: true
}, {
cwd: 'Bin/',
src: '**/*',
dest: '<%= deployLoc %>Bin/',
expand: true
}, {
cwd: 'clientbin/',
src: '**/*',
dest: '<%= deployLoc %>clientbin/',
expand: true
}, {
cwd: 'controllers/',
src: '**/*',
dest: '<%= deployLoc %>controllers/',
expand: true
}, {
cwd: 'controls/',
src: '**',
dest: '<%= deployLoc %>controls/',
expand: true
}, {
cwd: 'css/',
src: '*.css',
dest: '<%= deployLoc %>css/',
expand: true
}, {
cwd: 'css/',
src: '*.map',
dest: '<%= deployLoc %>css/',
expand: true
}, {
cwd: 'dataproxy/',
src: '**',
dest: '<%= deployLoc %>dataproxy/',
expand: true
}, {
cwd: 'directives/',
src: '**',
dest: '<%= deployLoc %>directives/',
expand: true
}, {
cwd: 'ext/',
src: '**/*',
dest: '<%= deployLoc %>ext/',
expand: true
}, {
cwd: 'factories/',
src: '**/*',
dest: '<%= deployLoc %>factories/',
expand: true
}, {
cwd: 'images/',
src: '**/*',
dest: '<%= deployLoc %>images/',
expand: true
}, {
cwd: 'sdk/',
src: '*.js',
dest: '<%= deployLoc %>sdk/',
expand: true
}, {
cwd: 'sdk/',
src: '*.aspx',
dest: '<%= deployLoc %>sdk/',
expand: true
}, {
cwd: 'views/',
src: '**/*',
dest: '<%= deployLoc %>views/',
expand: true
}, {
cwd: '',
src: ['*.jpg', '*.png', '*.asax', '*.cs', '*.aspx', '*.ico', '*.js', '*.xap', '*.xml', '*.wtml'],
dest: '<%= deployLoc %>',
expand: true
}
]
}
},
watch: {
sdk: {
files: 'sdk/wwtlib.js',
tasks: ['sdk', 'deploy']
},
// call out only the directories to watch prevents
// watch from watching recursive node_modules folders e.g.: '../**/*.js'
scripts: {
files: [
'controllers/**/*.js',
'controllers/*.js',
'controls/*.js',
'directives/*.js',
'dataproxy/*.js',
'factories/*.js',
'app.js'],
tasks: ['dist-js', 'deploy']
},
html: {
files: [
'views/**/*.html',
'Default.aspx'
],
tasks: ['deploy']
},
less: {
files: 'css/*.less',
tasks: ['dist-css', 'deploy']
}
},
exec: {
npmUpdate: {
command: 'npm update'
}
}
});
// Dependencies
require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
// JS concatenation and minification
grunt.registerTask('dist-js', ['concat:webclient', 'uglify:webclient']);
// Takes HTML5SDK generated script and packages into single usable lib. (scriptsharp v0.8).
grunt.registerTask('sdk', ['replace:wwtlib', 'concat:sdk', 'uglify:sdk']);
// Minify the generated search data (rare - internal only)
grunt.registerTask('dist-searchdata', ['uglify:searchData']);
// CSS
grunt.registerTask('dist-css', ['less:compileCore', 'autoprefixer:core', 'cssmin:minifyCore']);
grunt.registerTask('vendor', ['copy:vendor']);
// Deploy to wwt web site (internal only)
grunt.registerTask('deploy', ['copy:webclient']);
// uncomment out the below task and comment out the above task to run locally
//grunt.registerTask('deploy', []);
};

Просмотреть файл

@ -1,350 +0,0 @@
/*!
Gruntfile to perform wwt webclient pre-deploy tasks.
We compile webclient.less with bootstrap.less and
concat/minify all scripts together here.
Bootstrap upgrade note:
To upgrade bootstrap, copy the 4-color gradient out of the
mixins/gradients.less into the latest version.
webclient.less depends on that file.
*/
module.exports = function(grunt) {
'use strict';
// Force use of Unix newlines
grunt.util.linefeed = '\n';
RegExp.quote = function(string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
};
// Project configuration.
grunt.initConfig({
deployLoc: '../../../wwtmvc5/WWTMVC5/webclient/',
// Metadata.
pkg: grunt.file.readJSON('package.json'),
banner: '/**\n' +
'* WorldWide Telescope Web Client\n' +
'* Copyright 2014 Microsoft Research\n' +
'* Developed by Jonathan Fay and Ron Gilchrist\n' +
'**/\n',
// Task configuration.
clean: {
deployLoc: '<%=deployLoc%>'
},
concat: {
options: {
banner: '<%= banner %>'
},
webclient: {
src: [
'../ext/angular.js',
'../ext/angular-touch.js',
'../ext/angular-route.js',
'../ext/angular-animate.js',
'../ext/angular-cookies.js',
'../ext/angular-strap.js',
'../ext/angular-strap.tpl.js',
'../ext/intro.js',
'../ext/angular-intro.js',
'../app.js',
'../directives/Scroll.js',
'../directives/Localize.js',
'../directives/ContextMenu.js',
'../factories/appstate.js',
'../factories/localization.js',
'../factories/FinderScope.js',
'../factories/ThumbList.js',
'../factories/Util.js',
'../factories/UILibrary.js',
'../factories/SearchUtil.js',
'../factories/Skyball.js',
'../factories/HashManager.js',
'../dataproxy/Places.js',
'../dataproxy/Tours.js',
'../dataproxy/SearchData.js',
'../dataproxy/Astrometry.js',
'../controllers/ContextPanelController.js',
'../controllers/MainController.js',
'../controllers/IntroController.js',
'../controllers/MobileNavController.js',
'../controllers/LayerManagerController.js',
'../controllers/tabs/AdsController.js',
'../controllers/tabs/ExploreController.js',
'../controllers/tabs/SearchController.js',
'../controllers/tabs/SettingsController.js',
'../controllers/tabs/ViewController.js',
'../controllers/tabs/ToursController.js',
'../controllers/modals/ShareController.js',
'../controllers/modals/OpenItemController.js',
'../controllers/modals/ObservingTimeController.js',
'../controls/move.js',
'../controls/util.js'
],
dest: '../wwtwebclient.js'
},
sdk: {
src: [
'../sdk/ss.js',
'../sdk/wwtlib.js'
],
dest: '../sdk/wwtsdk.js'
},
oldsdk: {
src: [
'../sdk/old/mscorlib.debug.js',
'../sdk/old/wwtlib.debug.js'
],
dest: '../sdk/old/wwtlib_full.js'
}
},
//remove the AMD dependancy from scriptsharp output
replace: {
wwtlib: {
src: ['../sdk/wwtlib.js'],
dest: '../sdk/wwtlib.js',
replacements: [ {
from: "define('wwtlib', ['ss'], function(ss) {",
to: 'window.wwtlib = function(){'
}, {
from: 'return $exports;\n});',
to: 'return $exports;\n}();'
}]
}
},
uglify: {
options: {
preserveComments: 'some',
banner: '<%= banner %>'
},
webclient: {
src: '<%= concat.webclient.dest %>',
dest: '../wwtwebclient.min.js'
},
searchData: {
src: '../searchdataraw.js',
dest:'../searchdata.min.js'
},
sdk: {
src: '<%= concat.sdk.dest %>',
dest:'../sdk/wwtsdk.min.js'
},
oldsdk: {
src: '<%= concat.oldsdk.dest %>',
dest: '../sdk/old/wwtlib_full.min.js'
}
},
less: {
compileCore: {
options: {
strictMath: true,
sourceMap: true,
outputSourceFiles: true,
sourceMapURL: 'webclient.css.map',
sourceMapFilename: '../css/webclient.css.map'
},
src: '../css/bootstrap.less',
dest: '../css/webclient.css'
}
},
autoprefixer: {
options: {
browsers: [
"Android 2.3",
"Android >= 4",
"Chrome >= 20",
"Firefox >= 24",
"Explorer >= 10",
"iOS >= 6",
"Opera >= 12",
"Safari >= 6"
]
},
core: {
options: {
map: true
},
src: '../css/webclient.css'
}
},
cssmin: {
options: {
compatibility: 'ie10',
keepSpecialComments: '*',
noAdvanced: true
},
minifyCore: {
src: '../css/webclient.css',
dest: '../css/webclient.min.css'
}
},
copy: {
webclient: {
files: [
{
cwd: '../App_Data/',
src: '**/*',
dest: '<%= deployLoc %>App_Data/',
expand: true
}, {
cwd: '../Bin/',
src: '**/*',
dest: '<%= deployLoc %>Bin/',
expand: true
}, {
cwd: '../clientbin/',
src: '**/*',
dest: '<%= deployLoc %>clientbin/',
expand: true
}, {
cwd: '../controllers/',
src: '**/*',
dest: '<%= deployLoc %>controllers/',
expand: true
}, {
cwd: '../controls/',
src: '**',
dest: '<%= deployLoc %>controls/',
expand: true
}, {
cwd: '../css/',
src: '*.css',
dest: '<%= deployLoc %>css/',
expand: true
}, {
cwd: '../css/',
src: '*.map',
dest: '<%= deployLoc %>css/',
expand: true
}, {
cwd: '../dataproxy/',
src: '**',
dest: '<%= deployLoc %>dataproxy/',
expand: true
}, {
cwd: '../directives/',
src: '**',
dest: '<%= deployLoc %>directives/',
expand: true
}, {
cwd: '../ext/',
src: '**/*',
dest: '<%= deployLoc %>ext/',
expand: true
}, {
cwd: '../factories/',
src: '**/*',
dest: '<%= deployLoc %>factories/',
expand: true
}, {
cwd: '../images/',
src: '**/*',
dest: '<%= deployLoc %>images/',
expand: true
}, {
cwd: '../sdk/',
src: '*.js',
dest: '<%= deployLoc %>sdk/',
expand: true
}, {
cwd: '../sdk/',
src: '*.aspx',
dest: '<%= deployLoc %>sdk/',
expand: true
}, {
cwd: '../views/',
src: '**/*',
dest: '<%= deployLoc %>views/',
expand: true
}, {
cwd: '../',
src: ['*.jpg', '*.png', '*.asax', '*.cs', '*.aspx', '*.ico', '*.js', '*.xap', '*.xml', '*.wtml'],
dest: '<%= deployLoc %>',
expand: true
}
]
}
},
watch: {
sdk: {
files: '../sdk/wwtlib.js',
tasks: ['replace:wwtlib', 'concat:sdk', 'uglify:sdk']
},
// call out only the directories to watch prevents
// watch from watching recursive node_modules folders e.g.: '../**/*.js'
scripts: {
files: [
'../controllers/**/*.js',
'../controllers/*.js',
'../controls/*.js',
'../directives/*.js',
'../dataproxy/*.js',
'../factories/*.js',
'../app.js'],
tasks: ['concat:webclient', 'uglify:webclient', 'copy:webclient']
},
html: {
files: [
'../views/**/*.html',
'../Default.aspx'
],
tasks: ['copy:webclient']
},
less: {
files: '../css/*.less',
tasks: ['less', 'copy:webclient']
}
},
exec: {
npmUpdate: {
command: 'npm update'
}
}
});
// These plugins provide necessary tasks.
require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
require('time-grunt')(grunt);
// JS distribution task.
grunt.registerTask('dist-js', ['concat:webclient', 'uglify:webclient']);
// Older SDK distribution task (scriptsharp v0.74).
grunt.registerTask('oldsdk', ['concat:oldsdk', 'uglify:oldsdk']);
// SDK distribution task. (scriptsharp v0.8).
grunt.registerTask('sdk', ['replace:wwtlib', 'concat:sdk', 'uglify:sdk']);
// Minify the generated search data
grunt.registerTask('dist-searchdata', ['uglify:searchData']);
// CSS distribution task.
grunt.registerTask('less-compile', ['less:compileCore']);
grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'cssmin:minifyCore']);
// Full distribution task.
grunt.registerTask('dist', ['dist-css', 'dist-js']);
//deploy to wwt web site
grunt.registerTask('deploy', ['copy:webclient']);
//compile js/less and deploy to wwt web site
grunt.registerTask('deploy-full', ['dist', 'copy:webclient']);
};

Просмотреть файл

@ -1 +0,0 @@
path=%PATH%;%APPDATA%\npm

Просмотреть файл

@ -1,48 +0,0 @@
{
"name": "webclient",
"description": "WorldWide Telescope Web Client.",
"version": "5.2.4",
"keywords": [
"WorldWide Telescope",
"client",
"web"
],
"homepage": "http://worldwidetelescope.org",
"author": "Jonathan Fay (jfay@microsoft.com) and Ron Gilchrist (kid@thewebkid.com)",
"repository": {
"type": "git",
"url": "https://github.com/MSRConnections/OpenWWT-Web.git"
},
"bugs": {
"url": "https://github.com/MSRConnections/OpenWWT-Web/Issues"
},
"license": {
"type": "MIT",
"url": "http://opensource.org/licenses/MIT"
},
"devDependencies": {
"grunt": "~0.4.5",
"grunt-autoprefixer": "~1.0.1",
"grunt-banner": "~0.2.3",
"grunt-contrib-clean": "~0.6.0",
"grunt-contrib-concat": "~0.5.0",
"grunt-contrib-connect": "~0.9.0",
"grunt-contrib-copy": "~0.7.0",
"grunt-contrib-cssmin": "~0.10.0",
"grunt-contrib-less": "~0.12.0",
"grunt-contrib-uglify": "~0.6.0",
"grunt-contrib-watch": "~0.6.1",
"grunt-csscomb": "~3.0.0",
"grunt-exec": "~0.4.6",
"grunt-text-replace": "^0.4.0",
"load-grunt-tasks": "~1.0.0",
"npm-shrinkwrap": "~5.1.0",
"time-grunt": "~1.0.0"
},
"engines": {
"node": "~0.10.1"
},
"buildConfig": {
"uglify": true
}
}

16
bower.json Normal file
Просмотреть файл

@ -0,0 +1,16 @@
{
"name": "WWTWebClient",
"description": "WorldWide Telescope Web Client",
"version": "5.2.4",
"private": "true",
"dependencies": {
"jquery": "~2.1.3",
"angular": "~1.3.10",
"angular-animate": "~1.3.10",
"angular-cookies": "~1.3.10",
"angular-route": "~1.3.10",
"angular-touch": "~1.3.10",
"angular-strap": "~2.1.6",
"bootstrap": "~3.3.2"
}
}

Просмотреть файл

@ -1,373 +0,0 @@
/**
1/22/2015
This file is no longer used in the webclient. Keeping around to track regressions for a month or two.
**/
wwt.controllers.controller('ThumbnailController',
['$scope',
'$rootScope',
'AppState',
'Places',
'$timeout',
'Util',
'SearchUtil',
'HashManager',
function ($scope, $rootScope, appState, places, $timeout, util, searchUtil, hashManager) {
var exploreRoot;
var depth = 1;
var bc;
var cache = [];
$scope.pageCount = 1;
$scope.pageSize = 1;
$scope.currentPage = 0;
var explore,
nearby,
search,
openCollection,
collectionPlace,
collectionPlaceIndex,
hashObj;
$scope.initExploreView = function (hashChange) {
if (!explore) {
$rootScope.$on('hashChange', function (event, obj) {
if (obj['place'] && isNaN(parseInt(obj['place'].charAt(0)))) {
hashObj = obj;
collectionPlace = obj['place'];
collectionPlaceIndex = 1;
$scope.loadingUrlPlace = true;
$('#loadingModal').modal('show');
places.getRoot().then(function(result) {
//$scope.initExploreView(true);
$scope.breadCrumb = bc = [$scope.getFromEn('Collections')];
$scope.exploreList = exploreRoot;
findCollectionChild();
});
}
});
explore = true;
}
if (!hashChange) {
places.getRoot().then(function(result) {
$scope.exploreList = exploreRoot = result;
var collectionsString = $scope.getFromEn('Collections');
if (collectionsString.then) {
collectionsString.then(function(s) {
$scope.breadCrumb = bc = [s];
});
} else {
$scope.breadCrumb = bc = [collectionsString];
}
cache = [result];
calcPageSize($scope.exploreList);
$.each(result, function(i, item) {
if (item.get_name() === 'Open Collections') {
result.splice(0, 0, item);
result.pop();
openCollection = true;
$scope.clickThumb(item);
}
});
});
}
};
var findCollectionChild = function() {
var guidParts = collectionPlace.split('.');
var relevantPart = guidParts.slice(0, collectionPlaceIndex).join('.');
var child = places.findChildById(relevantPart, $scope.exploreList);
if (collectionPlaceIndex < guidParts.length) {
collectionPlaceIndex++;
$scope.clickThumb(child, findCollectionChild);
} else {
$timeout(function () {
$scope.loadingUrlPlace = false;
$scope.clickThumb(child);
$('#loadingModal').modal('hide');
if (hashObj['ra']) {
var timer = hashObj['place'].toLowerCase().indexOf('hirise') != -1 ? 6666 : 3333;
setTimeout(function() {
$rootScope.ctl.gotoRaDecZoom(
parseFloat(hashObj['ra']) * 15,
parseFloat(hashObj['dec']),
parseFloat(hashObj['fov']),
false
);
}, timer);
}
location.hash = '/';
}, 2222);
}
}
var handledInitBroadcast = false,
newCollectionUrl;
$scope.$on('initExplorer', function (event,collectionUrl) {
if (!handledInitBroadcast && explore) {
newCollectionUrl = collectionUrl;
$scope.initExploreView();
handledInitBroadcast = true;
setTimeout(function() { handledInitBroadcast = false; }, 2000);
}
});
$scope.clickThumb = function (item, folderCallback) {
wwt.wc.clearAnnotations();
$scope.activeItem = item.get_thumbnailUrl() + item.get_name();
if (item.get_name() === 'Up Level') {
$scope.currentPage = 0;
depth--;
bc.pop();
$scope.breadCrumb = bc;//.join(' > ') + ' >';
cache.pop();
$scope.exploreList = cache[cache.length - 1];
calcPageSize($scope.exploreList);
return;
}
if (item.get_isFolder()) {
$scope.currentPage = 0;
depth++;
bc.push(item.get_name());
$scope.breadCrumb = bc;//.join(' > ') + ' >';
places.getChildren(item).then(function (result) {
if ($.isArray(result[0]))
result = result[0];
var unique = [];
$.each(result, function (index, el) {
if ($.inArray(el, unique) === -1) unique.push(el);
});
$scope.exploreList = unique;
cache.push(result);
if (openCollection) {
if (newCollectionUrl) {
var i = 0;
while (result[i].url && result[i].url.indexOf(newCollectionUrl) == -1) i++;
$scope.clickThumb(result[i]);
newCollectionUrl = null;
} else if (result.length) {
$scope.clickThumb(result[0]);
}
}
calcPageSize($scope.exploreList);
if (folderCallback) {
folderCallback();
}
});
}else if (openCollection) {
openCollection = false;
} else if ($scope.$hide) {
$scope.$hide();
$rootScope.searchModal = false;
} else if (util.isMobile) {
$('#explorerModal').modal('hide');
}
//$('.cross-fader').parent().hide();
$scope.setActiveItem(item);
if ((item.isFGImage && item.imageSet && $scope.lookAt !== 'Sky') || item.isSurvey){
$scope.setLookAt('Sky', item.get_name(), true, item.isSurvey);
if (item.isSurvey) {
$scope.setSurveyBg(item.get_name());
} else {
$scope.setForegroundImage(item);
}
if ($scope.$hide) {
$scope.$hide();
$rootScope.searchModal = false;
}
return;
}
else if (item.isPanorama) {
$scope.setLookAt('Panorama', item.get_name());
} else if (item.isEarth) {
$scope.setLookAt('Earth', item.get_name());
} else if (util.getIsPlanet(item) && $scope.lookAt !== 'SolarSystem') {
$scope.setLookAt('Planet', item.get_name());
} else if (item.isPlanet && $scope.lookAt !== 'SolarSystem') {
$scope.setLookAt('Planet', '');
}
if ((ss.canCast(item, wwtlib.Place)||item.isEarth) && !item.isSurvey) {
$scope.setForegroundImage(item);
}
};
$scope.expanded = false;
$scope.expandThumbnails = function(flag) {
$scope.expanded = flag != undefined ? flag : !$scope.expanded;
$scope.expandTop($scope.expanded);
calcPageSize($scope.exploreList);
}
$scope.hoverThumb = function(item) {
if (nearby) {
$scope.drawCircleOverPlace(item);
}
};
$scope.breadCrumbClick = function(index) {
$scope.exploreList = cache[index];
while (bc.length - 1 > index) {
bc.pop();
cache.pop();
}
$scope.currentPage = 0;
calcPageSize();
};
var pagedList;
var calcPageSize = function (list) {
if (list) {
pagedList = list;
} else {
list = pagedList;
}
$timeout(function() {
var tnWid = 116;
var winWid = $(window).width();
if (nearby && ($scope.lookAt == 'Sky' || $scope.lookAt == 'SolarSystem')) {
winWid = winWid - 216; //angular.element('body.desktop .fov-panel').width();
}
$scope.pageSize = util.isMobile?9999:Math.floor(winWid / tnWid);
if ($scope.expanded) {
$scope.pageSize *= 4;
}
var listLength = list ? list.length : 2;
$scope.pageCount = Math.ceil(listLength / $scope.pageSize);
spliceOnePage();
},1);
};
$(window).on('resize', function () {
$scope.currentPage = 0;
var offset = nearby ? angular.element('body.desktop .fov-panel').width() : 0;
calcPageSize(null, offset);
//util.log('calc',offset);
});
$scope.moveMenu = function (i) {
$('#menuContainer' + i).append($('#researchMenu'));
};
$scope.moveNboMenu = function (i) {
$('#nboMenuContainer' + i).append($('#researchMenu'));
};
$scope.showMenu = function (item, i) {
$('.popover-content .close-btn').click();
setTimeout(function() {
$('.popover-content .close-btn').click();
$('#menuContainer' + i).find('.dropdown').addClass('open');
}, 10);
$scope.setMenuContextItem(item,true);
};
$scope.preventClickBubble = function(event) {
event.stopImmediatePropagation();
};
$scope.goBack = function () {
//$(document.body).append($('#researchMenu'));
$scope.currentPage = $scope.currentPage == 0 ? $scope.currentPage : $scope.currentPage - 1;
spliceOnePage();
};
$scope.goFwd = function () {
//$(document.body).append($('#researchMenu'));
$scope.currentPage = $scope.currentPage == $scope.pageCount - 1 ? $scope.currentPage : $scope.currentPage + 1;
spliceOnePage();
};
var spliceOnePage = function () {
if (nearby || search) {
var start = $scope.currentPage * $scope.pageSize;
var masterCollection = nearby ? $scope.placesInCone : $scope.searchResults;
if (masterCollection) {
if (nearby) {
$scope.nearbyPlaces = masterCollection.slice(start, start + $scope.pageSize);
} else {
$scope.searchResultSet = masterCollection.slice(start, start + $scope.pageSize);
}
}
}
}
var lastUpdate = new Date();
$scope.initNearbyObjects = function() {
nearby = true;
$scope.placesInCone = [];
$scope.scrollDepth = 40;
$rootScope.$on('viewportchange', function (event, viewport) {
if ((!viewport.isDirty && !viewport.init) || new Date().valueOf() - lastUpdate.valueOf() > 2000) {
findNearbyObjects();
lastUpdate = new Date();
}
});
$scope.$watch('lookAt', findNearbyObjects);
};
function findNearbyObjects() {
searchUtil.findNearbyObjects({
lookAt: $scope.lookAt,
singleton: $rootScope.singleton
}).then(function(result) {
$scope.currentPage = 0;
$scope.placesInCone = result;
if (util.isMobile) {
$scope.setNBO($scope.placesInCone);
}
calcPageSize($scope.placesInCone);
});
}
$scope.gotoCoord = function () {
var tempPlace = wwtlib.Place.create('tmp', util.parseHms($scope.goto.Dec), util.parseHms($scope.goto.RA), null, null, wwtlib.ImageSetType[$scope.lookAt.toLowerCase()], 60);
$rootScope.singleton.gotoTarget(tempPlace, false, false, true);
};
$scope.initSearch = function () {
$scope.goto = {RA:'',Dec:''};
if (util.isMobile) {
$scope.scrollDepth = 40;
}
search = true;
$timeout(function() {
$scope.SearchType = 'J2000';
$('#txtSearch').focus();
},123);
}
$scope.searchKeyPress = function () {
$timeout(function() {
var q = $scope.q = $('#txtSearch').val();
searchUtil.runSearch(q).then(function(result) {
$scope.searchResults = result;
calcPageSize($scope.searchResults);
});
}, 10);
}
}]);

Просмотреть файл

@ -1,4 +1,14 @@

#gradient{
.vertical-four-colors(@start-color: #00b3ee; @second-color: #7a43b6; @color-stop2: 33%; @third-color: #7a43b6; @color-stop3: 66.6%; @end-color: #c3325f) {
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop2, @second-color),color-stop(@color-stop3, @third-color), to(@end-color));
background-image: -webkit-linear-gradient(@start-color, @second-color @color-stop2, @third-color @color-stop3, @end-color);
background-image: -moz-linear-gradient(top, @start-color, @second-color @color-stop2, @third-color @color-stop3, @end-color);
background-image: linear-gradient(@start-color, @second-color @color-stop2, @third-color @color-stop3, @end-color);
background-repeat: no-repeat;
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@second-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
}
}
@wc-text-color:fade(white,80%);
@wc-bg-color: rgba(25,30,43,.7);
.iblock {

Просмотреть файл

@ -8,7 +8,7 @@
var data,
searchIndex = {},
initPromise,
constellations = [];
constellations = [];
function getData() {
var deferred = $q.defer();
@ -122,7 +122,7 @@
var firstChar = s.charAt(0).toLowerCase();
if (firstChar === "'") firstChar = s.charAt(1).toLowerCase();
if (searchIndex[firstChar]) {
if (searchIndex[firstChar][searchIndex[firstChar].length - 1] != place) {
if (searchIndex[firstChar][searchIndex[firstChar].length - 1] !== place) {
searchIndex[firstChar].push(place);
wwt.searchDataIndexed = searchIndex;
}

9
ext/angular-strap.js поставляемый
Просмотреть файл

@ -4471,12 +4471,9 @@ angular.module('mgcrea.ngStrap.tooltip', ['mgcrea.ngStrap.helpers.dimensions'])
function bindTriggerEvents() {
var triggers = options.trigger.split(' ');
angular.forEach(triggers, function(trigger) {
if (trigger === 'click') {
element.on('click', $tooltip.toggle);
}
else if (trigger === 'contextmenu') {
element.on('contextmenu', $tooltip.toggle);
} else if (trigger !== 'manual') {
if(trigger === 'click') {
element.on('click', $tooltip.toggle);
} else if(trigger !== 'manual') {
element.on(trigger === 'hover' ? 'mouseenter' : 'focus', $tooltip.enter);
element.on(trigger === 'hover' ? 'mouseleave' : 'blur', $tooltip.leave);
nodeName === 'button' && trigger !== 'hover' && element.on(isTouch ? 'touchstart' : 'mousedown', $tooltip.$onFocusElementMouseDown);

124
ext/bootstrap.js поставляемый
Просмотреть файл

@ -1,6 +1,6 @@
/*!
* Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Bootstrap v3.3.2 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
@ -9,6 +9,7 @@ if (typeof jQuery === 'undefined') {
}
+function ($) {
'use strict';
var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
@ -16,10 +17,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: transition.js v3.3.1
* Bootstrap: transition.js v3.3.2
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -76,10 +77,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: alert.js v3.3.1
* Bootstrap: alert.js v3.3.2
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -95,7 +96,7 @@ if (typeof jQuery === 'undefined') {
$(el).on('click', dismiss, this.close)
}
Alert.VERSION = '3.3.1'
Alert.VERSION = '3.3.2'
Alert.TRANSITION_DURATION = 150
@ -171,10 +172,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: button.js v3.3.1
* Bootstrap: button.js v3.3.2
* http://getbootstrap.com/javascript/#buttons
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -191,7 +192,7 @@ if (typeof jQuery === 'undefined') {
this.isLoading = false
}
Button.VERSION = '3.3.1'
Button.VERSION = '3.3.2'
Button.DEFAULTS = {
loadingText: 'loading...'
@ -288,10 +289,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: carousel.js v3.3.1
* Bootstrap: carousel.js v3.3.2
* http://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -319,7 +320,7 @@ if (typeof jQuery === 'undefined') {
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}
Carousel.VERSION = '3.3.1'
Carousel.VERSION = '3.3.2'
Carousel.TRANSITION_DURATION = 600
@ -359,8 +360,11 @@ if (typeof jQuery === 'undefined') {
}
Carousel.prototype.getItemForDirection = function (direction, active) {
var delta = direction == 'prev' ? -1 : 1
var activeIndex = this.getItemIndex(active)
var willWrap = (direction == 'prev' && activeIndex === 0)
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
if (willWrap && !this.options.wrap) return active
var delta = direction == 'prev' ? -1 : 1
var itemIndex = (activeIndex + delta) % this.$items.length
return this.$items.eq(itemIndex)
}
@ -405,14 +409,8 @@ if (typeof jQuery === 'undefined') {
var $next = next || this.getItemForDirection(type, $active)
var isCycling = this.interval
var direction = type == 'next' ? 'left' : 'right'
var fallback = type == 'next' ? 'first' : 'last'
var that = this
if (!$next.length) {
if (!this.options.wrap) return
$next = this.$element.find('.item')[fallback]()
}
if ($next.hasClass('active')) return (this.sliding = false)
var relatedTarget = $next[0]
@ -529,10 +527,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: collapse.js v3.3.1
* Bootstrap: collapse.js v3.3.2
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -558,7 +556,7 @@ if (typeof jQuery === 'undefined') {
if (this.options.toggle) this.toggle()
}
Collapse.VERSION = '3.3.1'
Collapse.VERSION = '3.3.2'
Collapse.TRANSITION_DURATION = 350
@ -576,7 +574,7 @@ if (typeof jQuery === 'undefined') {
if (this.transitioning || this.$element.hasClass('in')) return
var activesData
var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing')
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
if (actives && actives.length) {
activesData = actives.data('bs.collapse')
@ -741,10 +739,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: dropdown.js v3.3.1
* Bootstrap: dropdown.js v3.3.2
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -761,7 +759,7 @@ if (typeof jQuery === 'undefined') {
$(element).on('click.bs.dropdown', this.toggle)
}
Dropdown.VERSION = '3.3.1'
Dropdown.VERSION = '3.3.2'
Dropdown.prototype.toggle = function (e) {
var $this = $(this)
@ -903,10 +901,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: modal.js v3.3.1
* Bootstrap: modal.js v3.3.2
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -934,7 +932,7 @@ if (typeof jQuery === 'undefined') {
}
}
Modal.VERSION = '3.3.1'
Modal.VERSION = '3.3.2'
Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150
@ -1228,11 +1226,11 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: tooltip.js v3.3.1
* Bootstrap: tooltip.js v3.3.2
* http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -1254,7 +1252,7 @@ if (typeof jQuery === 'undefined') {
this.init('tooltip', element, options)
}
Tooltip.VERSION = '3.3.1'
Tooltip.VERSION = '3.3.2'
Tooltip.TRANSITION_DURATION = 150
@ -1575,10 +1573,10 @@ if (typeof jQuery === 'undefined') {
}
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
}
@ -1674,18 +1672,12 @@ if (typeof jQuery === 'undefined') {
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option
var selector = options && options.selector
var $this = $(this)
var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option
if (!data && option == 'destroy') return
if (selector) {
if (!data) $this.data('bs.tooltip', (data = {}))
if (!data[selector]) data[selector] = new Tooltip(this, options)
} else {
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
}
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (typeof option == 'string') data[option]()
})
}
@ -1707,10 +1699,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: popover.js v3.3.1
* Bootstrap: popover.js v3.3.2
* http://getbootstrap.com/javascript/#popovers
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -1727,7 +1719,7 @@ if (typeof jQuery === 'undefined') {
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.1'
Popover.VERSION = '3.3.2'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right',
@ -1794,18 +1786,12 @@ if (typeof jQuery === 'undefined') {
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.popover')
var options = typeof option == 'object' && option
var selector = options && options.selector
var $this = $(this)
var data = $this.data('bs.popover')
var options = typeof option == 'object' && option
if (!data && option == 'destroy') return
if (selector) {
if (!data) $this.data('bs.popover', (data = {}))
if (!data[selector]) data[selector] = new Popover(this, options)
} else {
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
}
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (typeof option == 'string') data[option]()
})
}
@ -1827,10 +1813,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: scrollspy.js v3.3.1
* Bootstrap: scrollspy.js v3.3.2
* http://getbootstrap.com/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -1858,7 +1844,7 @@ if (typeof jQuery === 'undefined') {
this.process()
}
ScrollSpy.VERSION = '3.3.1'
ScrollSpy.VERSION = '3.3.2'
ScrollSpy.DEFAULTS = {
offset: 10
@ -2003,10 +1989,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: tab.js v3.3.1
* Bootstrap: tab.js v3.3.2
* http://getbootstrap.com/javascript/#tabs
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -2021,7 +2007,7 @@ if (typeof jQuery === 'undefined') {
this.element = $(element)
}
Tab.VERSION = '3.3.1'
Tab.VERSION = '3.3.2'
Tab.TRANSITION_DURATION = 150
@ -2157,10 +2143,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: affix.js v3.3.1
* Bootstrap: affix.js v3.3.2
* http://getbootstrap.com/javascript/#affix
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
@ -2186,7 +2172,7 @@ if (typeof jQuery === 'undefined') {
this.checkPosition()
}
Affix.VERSION = '3.3.1'
Affix.VERSION = '3.3.2'
Affix.RESET = 'affix affix-top affix-bottom'
@ -2211,7 +2197,7 @@ if (typeof jQuery === 'undefined') {
var colliderTop = initializing ? scrollTop : position.top
var colliderHeight = initializing ? targetHeight : height
if (offsetTop != null && colliderTop <= offsetTop) return 'top'
if (offsetTop != null && scrollTop <= offsetTop) return 'top'
if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
return false

9205
ext/jquery.js поставляемый Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -7,14 +7,12 @@
goFwd: goFwd,
goBack: goBack
};
var scopes = {};
function init(scope, name) {
scope.pageCount = 1;
scope.pageCount = 1;
scope.pageSize = 1;
scope.currentPage = 0;
scopes[name] = scope;
scope.preventClickBubble = function (event) {
event.stopImmediatePropagation();
};
@ -33,7 +31,7 @@
if (util.isMobile) {
menuContainer = $('#' + name + 'Container #menuContainer' + i);
}
menuContainer.append($('#researchMenu'));
menuContainer.append($('#researchMenu'));
setTimeout(function () {
$('.popover-content .close-btn').click();
menuContainer.find('#researchMenu')

49
package.json Normal file
Просмотреть файл

@ -0,0 +1,49 @@
{
"name": "webclient",
"description": "WorldWide Telescope Web Client.",
"version": "5.2.4",
"keywords": [
"WorldWide Telescope",
"client",
"web"
],
"homepage": "http://worldwidetelescope.org",
"author": "Jonathan Fay (jfay@microsoft.com) and Ron Gilchrist (kid@thewebkid.com)",
"repository": {
"type": "git",
"url": "https://github.com/MSRConnections/OpenWWT-Web.git"
},
"bugs": {
"url": "https://github.com/MSRConnections/OpenWWT-Web/Issues"
},
"license": {
"type": "MIT",
"url": "http://opensource.org/licenses/MIT"
},
"devDependencies": {
"grunt": "~0.4.5",
"grunt-autoprefixer": "~1.0.1",
"grunt-banner": "~0.2.3",
"grunt-contrib-clean": "~0.6.0",
"grunt-contrib-concat": "~0.5.0",
"grunt-contrib-connect": "~0.9.0",
"grunt-contrib-copy": "~0.7.0",
"grunt-contrib-cssmin": "~0.10.0",
"grunt-contrib-less": "~0.12.0",
"grunt-contrib-uglify": "~0.6.0",
"grunt-contrib-watch": "~0.6.1",
"grunt-csscomb": "~3.0.0",
"grunt-exec": "~0.4.6",
"grunt-text-replace": "^0.4.0",
"load-grunt-tasks": "~1.0.0",
"npm-shrinkwrap": "~5.1.0",
"time-grunt": "~1.0.0"
},
"engines": {
"node": "~0.10.1"
},
"buildConfig": {
"uglify": true
}
}

Просмотреть файл

@ -73,9 +73,10 @@
</ItemGroup>
<ItemGroup>
<Content Include="app.js" />
<Content Include="bootstrap\.gitattributes" />
<Content Include="bootstrap\.gitignore" />
<Content Include="bootstrap\Gruntfile.js" />
<Content Include=".gitattributes" />
<Content Include=".gitignore" />
<Content Include="ext\jquery.js" />
<Content Include="Gruntfile.js" />
<Content Include="bootstrap\less\.csscomb.json" />
<Content Include="bootstrap\less\.csslintrc" />
<Content Include="bootstrap\less\alerts.less" />
@ -146,8 +147,7 @@
<Content Include="bootstrap\less\type.less" />
<Content Include="bootstrap\less\utilities.less" />
<Content Include="bootstrap\less\wells.less" />
<Content Include="bootstrap\.editorconfig" />
<Content Include="bootstrap\package.json" />
<Content Include=".editorconfig" />
<Content Include="clientbin\WWTSL.xap" />
<Content Include="controllers\tabs\AdsController.js" />
<Content Include="controllers\IntroController.js" />
@ -161,7 +161,6 @@
<Content Include="controllers\tabs\SearchController.js" />
<Content Include="controllers\tabs\SettingsController.js" />
<Content Include="controllers\modals\ShareController.js" />
<Content Include="controllers\ThumbnailController.js" />
<Content Include="controllers\tabs\ToursController.js" />
<Content Include="controllers\tabs\ViewController.js" />
<Content Include="controls\move.js" />
@ -196,7 +195,6 @@
<Content Include="ext\angular-touch.js" />
<Content Include="ext\angular.js" />
<Content Include="ext\bootstrap.js" />
<Content Include="ext\bootstrap.min.js" />
<Content Include="ext\intro.js" />
<Content Include="ext\intro.min.js" />
<Content Include="ext\introjs-rtl.css" />
@ -277,6 +275,7 @@
<Content Include="Images\venus.jpg" />
<Content Include="Images\wwtlogo.png" />
<Content Include="login.aspx" />
<Content Include="package.json" />
<Content Include="sdk\mscorlib.dll" />
<Content Include="sdk\mscorlib.xml" />
<Content Include="sdk\Script.Web.dll" />
@ -338,7 +337,8 @@
<Content Include="App_Readme\WURFL Quick Guide_v1_5.pdf" />
<Content Include="App_Data\wurfl-latest.zip" />
<Content Include="packages.config" />
<Content Include="bootstrap\ensurenpm.cmd" />
<Content Include="ensurenpm.cmd" />
<Content Include="bower.json" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>