blob: a3b380179dc0b3e1fd58da091d3878974b54bfa6 [file] [log] [blame]
/**
* 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();
}
]);