UNPKG

aping-plugin-openweathermap

Version:
99 lines (89 loc) 5.39 kB
"use strict"; angular.module("jtt_aping_openweathermap", ['jtt_openweathermap']) .directive('apingOpenweathermap', ['apingOpenWeatherMapHelper', 'apingUtilityHelper', 'openweathermapFactory', function (apingOpenWeatherMapHelper, apingUtilityHelper, openweathermapFactory) { return { require: '?aping', restrict: 'A', replace: 'false', link: function (scope, element, attrs, apingController) { var appSettings = apingController.getAppSettings(); var requests = apingUtilityHelper.parseJsonFromAttributes(attrs.apingOpenweathermap, apingOpenWeatherMapHelper.getThisPlatformString(), appSettings); requests.forEach(function (request) { //create helperObject for helper function call var helperObject = { model: appSettings.model, }; if (typeof appSettings.getNativeData !== "undefined") { helperObject.getNativeData = appSettings.getNativeData; } else { helperObject.getNativeData = false; } //create requestObject for api request call var requestObject = { appid: apingUtilityHelper.getApiCredentials(apingOpenWeatherMapHelper.getThisPlatformString(), "api_key"), lang: request.language || false, units: request.units || "metric", }; if (request.units === 'kelvin') { requestObject.units = undefined; } if (request.cityName) { requestObject.q = request.cityName; if (request.countryCode) { requestObject.q += "," + request.countryCode; } if (request.type) { requestObject.type = request.type; } if(request.timeSlot === "forecast5") { openweathermapFactory.getForecast5FromCitySearchByName(requestObject) .then(function (_data) { apingController.concatToResults(apingOpenWeatherMapHelper.getObjectByJsonData(_data, helperObject)); }); } else { openweathermapFactory.getWeatherFromCitySearchByName(requestObject) .then(function (_data) { apingController.concatToResults(apingOpenWeatherMapHelper.getObjectByJsonData(_data, helperObject)); }); } } else if (request.cityId) { requestObject.id = request.cityId; if(request.timeSlot === "forecast5") { openweathermapFactory.getForecast5FromCityById(requestObject) .then(function (_data) { apingController.concatToResults(apingOpenWeatherMapHelper.getObjectByJsonData(_data, helperObject)); }); } else { openweathermapFactory.getWeatherFromCityById(requestObject) .then(function (_data) { apingController.concatToResults(apingOpenWeatherMapHelper.getObjectByJsonData(_data, helperObject)); }); } } else if (request.lat && request.lng) { requestObject.lat = request.lat; requestObject.lon = request.lng; if(request.timeSlot === "forecast5") { openweathermapFactory.getForecast5FromLocationByCoordinates(requestObject) .then(function (_data) { apingController.concatToResults(apingOpenWeatherMapHelper.getObjectByJsonData(_data, helperObject)); }); } else { openweathermapFactory.getWeatherFromLocationByCoordinates(requestObject) .then(function (_data) { apingController.concatToResults(apingOpenWeatherMapHelper.getObjectByJsonData(_data, helperObject)); }); } } else if (request.zip) { requestObject.zip = request.zip; if (request.countryCode) { requestObject.zip += "," + request.countryCode; } openweathermapFactory.getWeatherFromLocationByZipcode(requestObject) .then(function (_data) { apingController.concatToResults(apingOpenWeatherMapHelper.getObjectByJsonData(_data, helperObject)); }); } }); } } }]);