| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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'; |
| |
| /** |
| * @ngdoc function |
| * @name ocwUiApp.controller:RcmedSelectionCtrl |
| * @description |
| * # RcmedSelectionCtrl |
| * Controller of the ocwUiApp |
| */ |
| angular.module('ocwUiApp') |
| .controller('RcmedSelectionCtrl', ['$rootScope', '$scope', '$http', '$timeout', 'selectedDatasetInformation', |
| function($rootScope, $scope, $http, $timeout, selectedDatasetInformation) { |
| // Grab a copy of the datasets so we can display a count to the user! |
| $scope.datasetCount = selectedDatasetInformation.getDatasets(); |
| $scope.fileAdded = false; |
| |
| $scope.getObservations = function() { |
| $http.jsonp($rootScope.baseURL + '/rcmed/datasets/?callback=JSON_CALLBACK'). |
| success(function(data) { |
| $scope.availableObs = data; |
| $scope.availableObs.splice(0, 0, {longname: 'Please select an option'}); |
| $scope.datasetSelection = $scope.availableObs[0]; |
| }). |
| error(function(data) { |
| $scope.availableObs = ["Unable to query RCMED"] |
| }); |
| }; |
| |
| $scope.getObservationBounds = function() { |
| $scope.observationBounds = {}; |
| |
| $http.get($rootScope.baseURL + '/rcmed/parameters/bounds/') |
| .success(function(data) { |
| $scope.observationBounds = data; |
| $scope.observationBounds['default'] = { |
| 'start': '1900-01-01 00:00:00', |
| 'end': '2050-01-01 00:00:00', |
| 'latMin': -90, |
| 'latMax': 89, |
| 'lonMin': -180, |
| 'lonMax': 179, |
| }; |
| }) |
| .error(function(data) { |
| $scope.observationBounds['default'] = { |
| 'start': '1900-01-01 00:00:00', |
| 'end': '2050-01-01 00:00:00', |
| 'latMin': -90, |
| 'latMax': 89, |
| 'lonMin': -180, |
| 'lonMax': 179, |
| }; |
| }); |
| }; |
| |
| $scope.getBoundsByParameterId = function(parameterId) { |
| if (parameterId in $scope.observationBounds) { |
| return $scope.observationBounds[parameterId]; |
| } else { |
| return $scope.observationBounds['default']; |
| } |
| }; |
| |
| $scope.dataSelectUpdated = function() { |
| var urlString = $rootScope.baseURL + '/rcmed/parameters/?dataset=' + |
| $scope.datasetSelection["shortname"] + |
| "&callback=JSON_CALLBACK"; |
| $http.jsonp(urlString) |
| .success(function(data) { |
| $scope.retrievedObsParams = data; |
| if ($scope.retrievedObsParams.length > 1) |
| $scope.retrievedObsParams.splice(0, 0, {shortname: 'Please select a parameter'}); |
| $scope.parameterSelection = $scope.retrievedObsParams[0]; |
| }); |
| }; |
| |
| $scope.addObservation = function() { |
| var newDataset = {}; |
| |
| newDataset['isObs'] = 1; |
| // Save the dataset id (the important part) and name (for display purposes) |
| newDataset['datasetId'] = $scope.datasetSelection['dataset_id']; |
| newDataset['name'] = $scope.datasetSelection['longname']; |
| // Save the parameter id (the important part) and name (for display purposes) |
| newDataset['id'] = $scope.parameterSelection['parameter_id']; |
| newDataset['param'] = $scope.parameterSelection['parameter_id']; |
| newDataset['paramName'] = $scope.parameterSelection['longname']; |
| |
| var bounds = $scope.getBoundsByParameterId(newDataset['id']); |
| newDataset['latlonVals'] = { |
| 'latMin': bounds['lat_min'], |
| 'latMax': bounds['lat_max'], |
| 'lonMin': bounds['lon_min'], |
| 'lonMax': bounds['lon_max'], |
| }; |
| newDataset['timeVals'] = { |
| 'start': bounds['start_date'], |
| 'end': bounds['end_date'], |
| }; |
| |
| // Set some defaults for lat/lon/time variable names. This just helps |
| // us display stuff later. |
| newDataset['lat'] = "N/A"; |
| newDataset['lon'] = "N/A"; |
| newDataset['time'] = "N/A"; |
| |
| selectedDatasetInformation.addDataset(newDataset); |
| |
| // Clear the user selections by requery-ing RCMED. This is really hacky, but it works for now... |
| $scope.availableObs = []; |
| $scope.retrievedObsParams = []; |
| $scope.getObservations(); |
| |
| // Display a confirmation message for a little bit |
| $scope.fileAdded = true; |
| $timeout(function() { |
| $scope.fileAdded = false; |
| }, 2000); |
| }; |
| |
| // Grab the available observations from RCMED |
| $scope.getObservations(); |
| $scope.getObservationBounds(); |
| } |
| ]); |