diff --git a/src/welcome.js b/src/welcome.js index 76078ce..7875f77 100644 --- a/src/welcome.js +++ b/src/welcome.js @@ -8,8 +8,47 @@ import Todos from "./components/todo.js" import Weather from './components/weather'; +const city2offset = { + "Amsterdam": 1, + "Barcelona": 1, + "Tokyo": 9, + "Dubai": 4, + "New York": -5, + "Mumbai": 5.5, + "Prague": 1, + "Mecca": 3, + "Miami": -5, + "Seoul": 9, + "Shanghai": 8, + "Taipei": 8, + "Hong Kong": 8, + "London": 1, + "Paris": 1, + "Singapore": 8, + "Delhi": 5.5, + "Istanbul": 3, + "Rome": 1, + "Guangzhou": 8, + "Bangkok": 7, + "Los Angeles": -8 +} + +function calcTime(city) { + if (city) { + var offset = city2offset[city] + var d = new Date(); + var utc = d.getTime() + (d.getTimezoneOffset() * 60000); + var nd = new Date(utc + (3600000*offset)); + return nd + } else { + return new Date() + } + +} + + const default_state = { - date: new Date(), + date: calcTime(null), day: 0, contentBody: "", contentVisible: false, @@ -70,7 +109,7 @@ class Welcome extends React.Component { tick() { this.setState({ - date: new Date() + date: calcTime(this.state.currentLocation.split("/")[0]) }); } @@ -424,7 +463,7 @@ class Welcome extends React.Component { - + diff --git a/test_weather.js b/test_weather.js index b0b573c..bf4335e 100644 --- a/test_weather.js +++ b/test_weather.js @@ -1,77 +1,33 @@ -const Axios = require("axios") -function getRandomItem(set) { - let items = Array.from(set); - return items[Math.floor(Math.random() * items.length)]; +city2offset = { + "Amsterdam": 1, + "Barcelona": 1, + "Tokyo": 9, + "Dubai": 4, + "New York": -5, + "Mumbai": 5.5, + "Prague": 1, + "Mecca": 3, + "Miami": -5, + "Seoul": 9, + "Shanghai": 8, + "Taipei": 8, + "Hong Kong": 8, + "London": 1, + "Paris": 1, + "Singapore": 8, + "Delhi": 5.5, + "Istanbul": 3, + "Rome": 1, + "Guangzhou": 8, + "Bangkok": 7, + "Los Angeles": -8 } -country2iso = { - "Netherlands": "nl", "Spain": "es", "Japan": "jp", "United Arab Emirates": "ae", - "USA": "us", "India": "in", "Czechia": "cz", "Saudi Arabia": "sa", "South Korea": "KR", - "China": "cn", "Taiwan": "tw", "Hong Kong": "hk", "United Kingdom": "gb", "France": "fr", - "Singapore": "sg", "Turkey": "tr", "Italy": "it", "Thailand": "th" -} - -num2day = { - 1 : "Monday", 2: "Tuesday", 3: "Wednesday", 4: "Thursday", - 5: "Friday", 6: "Saturday", 0: "Sunday" -} - -function fetch_weekly_forecast(city, country, callback) { - day2weather = {} - apiId = "58f46e0fda1c1d4da743943c656bcfe3" - city = city - code = country2iso[country] - mode = "json" - url = `http://api.openweathermap.org/data/2.5/forecast?appid=${apiId}&q=${city},${code}&mode=${mode}` - Axios.get(url).then( (res, err) => { - if (err) { - callback(null , err) - } else { - var time_reference = res.data.list[0].dt_txt.split(" ")[1] - var average = 0 - var weather_set = new Set() - res.data.list.map((data) => { - if (data.dt_txt.split(" ")[1] === time_reference) { - var date = new Date(data.dt_txt) - var min = Math.round(data.main["temp_min"] - 273.15) - var max = Math.round(data.main["temp_max"] - 273.15) - var temp = Math.round(data.main["temp"] - 273.15) - var weather = data.weather[0]["main"] - var day = num2day[date.getDay()] - day2weather[day] = { - "min": min, - "max": max, - "temp": temp, - "weather": weather, - } - average = average + temp - weather_set.add(weather) - } - }) - average = Math.round(average / 5) - Object.keys(num2day).forEach((key) => { - key = num2day[key] - if(day2weather[key] === undefined ) { - randomize_average = average //can add some staff - day2weather[key] = { - "min": Math.round(randomize_average), - "max": Math.round(randomize_average), - "temp": Math.round(randomize_average), - "weather": getRandomItem(weather_set) - } - } - }) - callback(day2weather, null) - } - }) -} - - -fetch_weekly_forecast("Istanbul", "Turkey", (day2weather, err) => { - if (err) { - console.log(err) - } else { - console.log(day2weather) - } -}) +function calcTime(city) { + var offset = city2offset[city] + var d = new Date(); + var utc = d.getTime() + (d.getTimezoneOffset() * 60000); + var nd = new Date(utc + (3600000*offset)); + return nd +} \ No newline at end of file