File: /home/barbeatleanalyti/public_html/barisnew.beatleanalytics.com/HTML-/js/app/weather/ctrl.js
app.controller("WeatherCtrl", ['$scope', 'yahooApi', 'geoApi', function($scope, yahooApi, geoApi) {
$scope.userSearchText = '';
$scope.search = {};
$scope.forcast = {};
$scope.place = {};
$scope.data = {};
// get place
geoApi.then(function(res) {
$scope.userSearchText = res.data.city+", "+res.data.country_code;
$scope.getLocations();
});
// get locations
$scope.getLocations = function () {
var query = 'select * from geo.places where text="' + $scope.userSearchText + '"';
yahooApi.query({'q':query,'format':'json'}, {}, function (response) {
$scope.search = response;
if(response.query.count === 1 && !response.query.results.channel){
$scope.getWeather( response.query.results.place.woeid, response.query.results.place.name, response.query.results.place.country.content);
}
});
};
// get weather
$scope.getWeather = function(woeid, city, country){
$scope.place.city = city;
$scope.place.country = country;
var query = 'select item from weather.forecast where woeid=' + woeid;
yahooApi.query({'q':query,'format':'json'}, {}, function (response) {
response.query.results.channel.item.forecast.forEach(function(i, v) {
i.icon = $scope.getCustomIcon(i.code);
});
response.query.results.channel.item.condition.icon = $scope.getCustomIcon(response.query.results.channel.item.condition.code);
$scope.data = response;
});
};
$scope.getCustomIcon = function (condition) {
switch (condition) {
case "0":
case "1":
case "2":
case "24":
case "25":
return "wind";
case "5":
case "6":
case "7":
case "18":
return "sleet";
case "3":
case "4":
case "8":
case "9":
case "10":
case "11":
case "12":
case "35":
case "37":
case "38":
case "39":
case "40":
case "45":
case "47":
return "rain";
case "13":
case "14":
case "15":
case "16":
case "17":
case "41":
case "42":
case "43":
case "46":
return "snow";
case "19":
case "20":
case "21":
case "22":
case "23":
return "fog";
case "26":
case "27":
case "28":
case "44":
return "cloudy";
case "29":
return "partly-cloudy-night";
case "30":
return "partly-cloudy-day";
case "31":
case "33":
return "clear-night";
case "32":
case "34":
case "36":
return "clear-day";
default:
return "";
}
}
}
]);
app.factory('yahooApi', ['$resource', function($resource) {
return $resource('http://query.yahooapis.com/v1/public/yql', {},
{'query':
{
method: 'GET',
isArray: false
}
}
);
}]);
app.factory('geoApi', ['$http', function($http) {
return $http.jsonp("http://muslimsalat.com/daily.json?callback=JSON_CALLBACK");
}
]);
function JSON_CALLBACK(){
// Nothing
}