http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff b/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff differ
http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff2 ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff2 b/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/web/META-INF/resources/fonts/glyphicons-halflings-regular.woff2 differ http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/images/OceanWave.jpg ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/images/OceanWave.jpg b/web/META-INF/resources/images/OceanWave.jpg new file mode 100644 index 0000000..15ee197 Binary files /dev/null and b/web/META-INF/resources/images/OceanWave.jpg differ http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/images/searching.png ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/images/searching.png b/web/META-INF/resources/images/searching.png new file mode 100644 index 0000000..8f2595b Binary files /dev/null and b/web/META-INF/resources/images/searching.png differ http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/images/spinner.gif ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/images/spinner.gif b/web/META-INF/resources/images/spinner.gif new file mode 100644 index 0000000..0cac9fd Binary files /dev/null and b/web/META-INF/resources/images/spinner.gif differ http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/images/sprite.png ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/images/sprite.png b/web/META-INF/resources/images/sprite.png new file mode 100644 index 0000000..d151860 Binary files /dev/null and b/web/META-INF/resources/images/sprite.png differ http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/index.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/index.html b/web/META-INF/resources/index.html new file mode 100755 index 0000000..cbcc30a --- /dev/null +++ b/web/META-INF/resources/index.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<!-- + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 Unless + + required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language + governing permissions and limitations under the License. + --> +<html lang="en" ng-app="mudrodApp"> +<head> + <title>JPL | MUDROD</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> + <link href="css/index.css" rel="stylesheet"> + <link href="css/main-header.css" rel="stylesheet"> + <link href="css/footer.css" rel="stylesheet"> + <link href="images/logo.png" rel="icon"> + + <script src="js/libs/jquery-1.10.2.min.js"></script> + <script src="js/libs/angular.min.js"></script> + <script src="js/libs/angular-route.min.js"></script> + <script src="js/libs/angular-resource.min.js"></script> + <script src="js/libs/angular-cookies.min.js"></script> + <script src="js/libs/underscore-min.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> + <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> + + <script src="js/app.js"></script> + <script src="js/controllers.js"></script> + <script src="js/services.js"></script> + + +</head> +<body> + +<!-- main header --> +<div ng-include src="'partials/main-header.html'"></div> + +<div ng-view></div> +<footer class="mudrod-footer"> + <p> + <a href="https://mudrod.github.io/" + target="_blank">Mining and Utilizing Dataset Relevancy from Oceanographic Datasets (MUDROD)</a> + is funded by NASA AIST Program(NNX15AM85G), developed by <a + href="http://stcenter.net/stc/">NSF Spatiotemporal + Innovation Center</a> in collaboration with <a + href="http://www.jpl.nasa.gov/">NASA JPL</a> + </p> +</footer> +<div ng-include src="'partials/footer.html'"></div> + +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/js/app.js ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/js/app.js b/web/META-INF/resources/js/app.js new file mode 100755 index 0000000..5901b80 --- /dev/null +++ b/web/META-INF/resources/js/app.js @@ -0,0 +1,49 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); you + * may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +/* App Module */ + +var mudrod = angular.module('mudrodApp', [ + 'ngRoute', + 'mudrodControllers', + 'mudrodServices' +]); + +mudrod.filter('urlencode', function() { + return function(input) { + if(input) { + return window.encodeURIComponent(input); + } + return ""; + } +}); + + +mudrod.config(['$routeProvider', + function ($routeProvider) { + $routeProvider.when('/', { + templateUrl: 'partials/search.html' + }).when('/metadataView/', { + templateUrl: 'partials/metadataResults.html', + controller: 'metadataViewCtrl', + reloadOnSearch: false + }).when('/datasetView/', { + templateUrl: 'partials/datasetResults.html', + controller: 'datasetViewCtrl' + }).otherwise({ + redirectTo: '/', + templateUrl: 'partials/search.html'}); + }]); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/js/controllers.js ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/js/controllers.js b/web/META-INF/resources/js/controllers.js new file mode 100755 index 0000000..8ff196f --- /dev/null +++ b/web/META-INF/resources/js/controllers.js @@ -0,0 +1,210 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); you + * may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +/* Controllers */ +var mudrodControllers = angular.module('mudrodControllers', []); + +mudrodControllers.controller('searchCtrl', ['$scope', '$rootScope', '$location', '$route', 'Autocomplete', 'SearchOptions', + function ($scope, $rootScope, $location, $route, Autocomplete, SearchOptions) { + + $scope.hidethis = true; + $scope.options = { + opt: 'Or' + }; + + $scope.complete = function (string) { + Autocomplete.get({term: string}, + function success(response) { + $scope.filterSearch = response; + $scope.hidethis = false; + }, + function error(errorResponse) { + console.log("Error:" + JSON.stringify(errorResponse)); + } + ); + }; + + $scope.fillTextbox = function (string) { + $scope.options.query = string; + $scope.hidethis = true; + document.getElementById("search-btn").focus(); + }; + + $scope.search = function (options) { + $scope.hidethis = true; + $rootScope.searchOptions = angular.copy(options); + $location.path("/metadataView/").search({'query': options.query, 'opt': options.opt}); + $route.reload(); + }; + + $scope.$watch(function () { + return SearchOptions.getSearchOptions(); + }, function (newValue, oldValue) { + if (newValue !== null) { + $scope.options.query = newValue.query; + $scope.options.opt = newValue.opt; + } + }, true); + }]); + +mudrodControllers.controller('vocabularyCtrl', ['$scope', '$rootScope', 'VocabList', + function vocabularyCtrl($scope, $rootScope, VocabList) { + + var word = $rootScope.searchOptions.query; + VocabList.get({query: word}, + function success(response) { + $scope.ontologyList = response.graph.ontology; + + }, + function error(errorResponse) { + console.log("Error:" + JSON.stringify(errorResponse)); + } + ); + }]); + +mudrodControllers.controller('metadataViewCtrl', ['$rootScope', '$scope', '$location', '$routeParams', 'MetaData', 'PagerService', 'SearchOptions', + function metadataViewCtrl($rootScope, $scope, $location, $routeParams, MetaData, PagerService, SearchOptions) { + + $scope.searchComplete = false; + + var vm = this; + vm.PDItems = []; + vm.pager = {}; + vm.setPage = setPage; + vm.rankData = rankData; + vm.totalMatches = 0; + vm.rankopt = $routeParams.rankopt ? $routeParams.rankopt : 'Rank-SVM'; + + var word = String(); + var opt = String(); + var rankopt = vm.rankopt; + + if (!$routeParams.query) { + if(!$rootScope.searchOptions){ + $location.path('/').search({}); + } + word = $rootScope.searchOptions.query; + opt = $rootScope.searchOptions.opt; + SearchOptions.setSearchOptions({'query': word, 'opt': opt}); + } else { + word = $routeParams.query; + if($routeParams.opt){ + opt = $routeParams.opt; + }else if ($rootScope.searchOptions && $rootScope.searchOptions.opt){ + opt = $rootScope.searchOptions.opt; + upsertQueryParam('opt', opt); + }else{ + opt = 'Or'; + upsertQueryParam('opt', opt); + } + + word = word.replace(/,/g , " "); + word = word.replace(/\//g , " "); + + SearchOptions.setSearchOptions({'query': word, 'opt': opt}); + } + $rootScope.searchOptions = SearchOptions.getSearchOptions(); + searchMetadata(); + + function initController() { + vm.setPage(1); + } + + function setPage(page) { + if (page < 1 || page > vm.pager.totalPages) { + return; + } + + // get pager object from service + vm.pager = PagerService.GetPager(vm.PDItems.length, page); + + // get current page of items + vm.items = vm.PDItems.slice(vm.pager.startIndex, vm.pager.endIndex + 1); + } + + function rankData(opt) { + rankopt = opt; + upsertQueryParam('rankopt', opt); + searchMetadata(); + } + + function upsertQueryParam(paramName, paramValue){ + var qParams = $location.search(); + qParams[paramName] = paramValue; + $location.search(qParams); + } + + function searchMetadata() { + MetaData.get({query: word, operator: opt, rankoption: rankopt}, + function success(response) { + vm.PDItems = response.PDResults; + vm.totalMatches = vm.PDItems.length; + vm.query = word; + vm.opt = opt; + initController(); + $scope.searchComplete = true; + }, + function error(errorResponse) { + $scope.searchComplete = true; + vm.searchError = {"status": errorResponse.status, "message": errorResponse.data}; + } + ); + } + }]); + +mudrodControllers.controller('datasetViewCtrl', ['$rootScope', '$scope', '$routeParams', 'DatasetDetail', 'SearchOptions', + function datasetViewCtrl($rootScope, $scope, $routeParams, DatasetDetail, SearchOptions) { + var shortname = $routeParams.shortname; + + var query = String(); + var opt = String(); + if ($rootScope.searchOptions) { + query = $rootScope.searchOptions.query; + opt = $rootScope.searchOptions.opt; + SearchOptions.setSearchOptions({'query': query, 'opt': opt}); + } else if ($routeParams.query && $routeParams.opt) { + query = $routeParams.query; + opt = $routeParams.opt; + SearchOptions.setSearchOptions({'query': query, 'opt': opt}); + $rootScope.searchOptions = SearchOptions.getSearchOptions(); + } + + DatasetDetail.get({shortname: shortname}, + function success(response) { + $scope.dataset = response.PDResults[0]; + }, + function error(errorResponse) { + console.log("Error:" + JSON.stringify(errorResponse)); + } + ); + }]); + +mudrodControllers.controller('hRecommendationCtrl', ['$scope', '$routeParams', 'HRecommendation', + function hRecommendationCtrl($scope, $routeParams, HRecommendation) { + var shortname = $routeParams.shortname; + HRecommendation.get({shortname: shortname}, + function success(response) { + $scope.recommendationList = response.HybridRecommendationData.linked; + + }, + function error(errorResponse) { + console.log("Error:" + JSON.stringify(errorResponse)); + } + ); + }]); + + + http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/js/libs/angular-cookies.min.js ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/js/libs/angular-cookies.min.js b/web/META-INF/resources/js/libs/angular-cookies.min.js new file mode 100755 index 0000000..09020c7 --- /dev/null +++ b/web/META-INF/resources/js/libs/angular-cookies.min.js @@ -0,0 +1,8 @@ +/* + AngularJS v1.3.7 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", +["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); +//# sourceMappingURL=angular-cookies.min.js.map
