-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sarah Williams + Morgan Adkisson - Whales #65
base: main
Are you sure you want to change the base?
Changes from all commits
481ca4e
4a4ce4a
7590718
08601e8
a0a5655
228b82f
9129e49
9758507
5a2e14e
60e084b
ad17bac
79553b9
4723e36
0930c3f
fe27bb0
93adfa6
2f84ba6
a2d69d5
cb02e35
ffced7d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,4 @@ | ||
{ | ||
"dependencies": { | ||
{ "dependencies": { | ||
"axios": "^0.27.2" | ||
} | ||
} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,144 @@ | ||||||||||||||||||||||||||||||
const GARDENSKIES = { | ||||||||||||||||||||||||||||||
sunny: '☁️ ☁️ ☁️ ☀️ ☁️ ☁️', | ||||||||||||||||||||||||||||||
cloudy: '☁️☁️ ☁️ ☁️☁️ ☁️ 🌤 ☁️ ☁️☁️', | ||||||||||||||||||||||||||||||
rainy: '🌧🌈⛈🌧🌧💧⛈🌧🌦🌧💧🌧🌧', | ||||||||||||||||||||||||||||||
snowy: '🌨❄️🌨🌨❄️❄️🌨❄️🌨❄️❄️🌨🌨', | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const CONDITIONS = { | ||||||||||||||||||||||||||||||
hot: { landscape: '🌵__🐍_🦂_🌵🌵__🐍_🏜_🦂', text: 'red' }, | ||||||||||||||||||||||||||||||
warm: { landscape: '🌸🌿🌼__🌷🌻🌿_☘️🌱_🌻🌷', text: 'orange' }, | ||||||||||||||||||||||||||||||
moderate: { landscape: '🌾🌾_🍃_🪨__🛤_🌾🌾🌾_🍃', text: 'yellow' }, | ||||||||||||||||||||||||||||||
chilly: { landscape: '🌲🌲⛄️🌲⛄️🍂🌲🍁🌲🌲⛄️🍂🌲', text: 'green' }, | ||||||||||||||||||||||||||||||
cold: { landscape: '❄️🌲⛄️🌲❄️🏂⛄️🌲❄️⛷🌲❄️🌲', text: 'teal' }, | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
Comment on lines
+8
to
+14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Style: I it would have been clearer if you called the key
Suggested change
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const state = { | ||||||||||||||||||||||||||||||
tempValue: 60, | ||||||||||||||||||||||||||||||
cityLow: null, | ||||||||||||||||||||||||||||||
cityHigh: null, | ||||||||||||||||||||||||||||||
weatherDescription: null, | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const kelvinToFahrenheit = (temperature) => | ||||||||||||||||||||||||||||||
(temperature - 273.15) * (9 / 5) + 32; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const updateTemp = () => { | ||||||||||||||||||||||||||||||
const tempValue = document.querySelector('#tempValue'); | ||||||||||||||||||||||||||||||
tempValue.textContent = state.tempValue; | ||||||||||||||||||||||||||||||
conditionLayout(state.tempValue, tempValue); | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const incrementTemp = () => { | ||||||||||||||||||||||||||||||
state.tempValue += 1; | ||||||||||||||||||||||||||||||
updateTemp(); | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const decrementTemp = () => { | ||||||||||||||||||||||||||||||
state.tempValue -= 1; | ||||||||||||||||||||||||||||||
updateTemp(); | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const conditionLayout = (temp, el) => { | ||||||||||||||||||||||||||||||
const landscapeLayout = document.querySelector('#gardenLandscape'); | ||||||||||||||||||||||||||||||
let currentCondition = null; | ||||||||||||||||||||||||||||||
if (temp >= 80) { | ||||||||||||||||||||||||||||||
currentCondition = CONDITIONS.hot; | ||||||||||||||||||||||||||||||
} else if (temp < 80 && temp >= 70) { | ||||||||||||||||||||||||||||||
currentCondition = CONDITIONS.warm; | ||||||||||||||||||||||||||||||
} else if (temp < 70 && temp >= 60) { | ||||||||||||||||||||||||||||||
currentCondition = CONDITIONS.moderate; | ||||||||||||||||||||||||||||||
} else if (temp < 60 && temp >= 50) { | ||||||||||||||||||||||||||||||
currentCondition = CONDITIONS.chilly; | ||||||||||||||||||||||||||||||
} else if (temp < 50) { | ||||||||||||||||||||||||||||||
currentCondition = CONDITIONS.cold; | ||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||
el.style.color = currentCondition.text; | ||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Using class names for this would have put all the styling in one location, though admittedly having your settings at the top of the file makes that less necessary. |
||||||||||||||||||||||||||||||
landscapeLayout.textContent = currentCondition.landscape; | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const updateTitleCity = () => { | ||||||||||||||||||||||||||||||
let titleCity = document.querySelector('#titleCity'); | ||||||||||||||||||||||||||||||
// console.log(cityName.value); | ||||||||||||||||||||||||||||||
titleCity.textContent = `${cityName.value}`; | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const resetCity = () => { | ||||||||||||||||||||||||||||||
document.querySelector('#titleCity').textContent = 'Seattle'; | ||||||||||||||||||||||||||||||
document.querySelector('#cityName').value = ''; | ||||||||||||||||||||||||||||||
getCityWeather(); | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const updateWeatherGardenSky = () => { | ||||||||||||||||||||||||||||||
let gardenSky = document.querySelector('#gardenSky'); | ||||||||||||||||||||||||||||||
console.log(`${weatherSelector.value}`); | ||||||||||||||||||||||||||||||
gardenSky.textContent = GARDENSKIES[weatherSelector.value]; | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const displayCurrentConditions = () => { | ||||||||||||||||||||||||||||||
let dailyLow = document.querySelector('#dailyLow'); | ||||||||||||||||||||||||||||||
let dailyHigh = document.querySelector('#dailyHigh'); | ||||||||||||||||||||||||||||||
let description = document.querySelector('#dailyDescription'); | ||||||||||||||||||||||||||||||
dailyLow.innerText = `Today's Low: ${state.cityLow}`; | ||||||||||||||||||||||||||||||
dailyHigh.innerText = `Today's High: ${state.cityHigh}`; | ||||||||||||||||||||||||||||||
description.innerText = `Description: ${state.weatherDescription}`; | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const getCityWeather = () => { | ||||||||||||||||||||||||||||||
axios | ||||||||||||||||||||||||||||||
.get('http://127.0.0.1:5000/location', { | ||||||||||||||||||||||||||||||
params: { q: `${cityName.value ? cityName.value : 'Seattle'}` }, | ||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||
.then((response) => { | ||||||||||||||||||||||||||||||
console.log(response.data); | ||||||||||||||||||||||||||||||
axios | ||||||||||||||||||||||||||||||
.get('http://127.0.0.1:5000/weather', { | ||||||||||||||||||||||||||||||
params: { | ||||||||||||||||||||||||||||||
lat: response.data[0]['lat'], | ||||||||||||||||||||||||||||||
lon: response.data[0]['lon'], | ||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||
.then((response) => { | ||||||||||||||||||||||||||||||
console.log(response.data); | ||||||||||||||||||||||||||||||
state.tempValue = Math.round( | ||||||||||||||||||||||||||||||
kelvinToFahrenheit(response.data.current.temp) | ||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||
updateTemp(); | ||||||||||||||||||||||||||||||
state.cityLow = Math.round( | ||||||||||||||||||||||||||||||
kelvinToFahrenheit(response.data.daily[0].temp.min) | ||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||
state.cityHigh = Math.round( | ||||||||||||||||||||||||||||||
kelvinToFahrenheit(response.data.daily[0].temp.max) | ||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||
state.weatherDescription = | ||||||||||||||||||||||||||||||
response.data.daily[0].weather[0].description; | ||||||||||||||||||||||||||||||
displayCurrentConditions(); | ||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||
.catch((error) => { | ||||||||||||||||||||||||||||||
console.log('error', error); | ||||||||||||||||||||||||||||||
console.log('error response', error.response); | ||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||
.catch((error) => { | ||||||||||||||||||||||||||||||
console.log('error', error); | ||||||||||||||||||||||||||||||
console.log('error response', error.response); | ||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
const registerEventHandlers = () => { | ||||||||||||||||||||||||||||||
const cityInput = document.querySelector('#cityName'); | ||||||||||||||||||||||||||||||
cityInput.addEventListener('input', updateTitleCity); | ||||||||||||||||||||||||||||||
const resetBtn = document.querySelector('#resetBtn'); | ||||||||||||||||||||||||||||||
resetBtn.addEventListener('click', resetCity); | ||||||||||||||||||||||||||||||
const weatherSelector = document.querySelector('#weatherSelector'); | ||||||||||||||||||||||||||||||
weatherSelector.addEventListener('change', updateWeatherGardenSky); | ||||||||||||||||||||||||||||||
const incrementButton = document.querySelector('#tempUp'); | ||||||||||||||||||||||||||||||
incrementButton.addEventListener('click', incrementTemp); | ||||||||||||||||||||||||||||||
const decrementButton = document.querySelector('#tempDown'); | ||||||||||||||||||||||||||||||
decrementButton.addEventListener('click', decrementTemp); | ||||||||||||||||||||||||||||||
const getTempButton = document.querySelector('#getTemp'); | ||||||||||||||||||||||||||||||
getTempButton.addEventListener('click', getCityWeather); | ||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
document.addEventListener('DOMContentLoaded', registerEventHandlers); | ||||||||||||||||||||||||||||||
document.addEventListener('DOMContentLoaded', getCityWeather); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
button { | ||
background: lightblue; | ||
padding: 10px; | ||
border-radius: 25px; | ||
} | ||
|
||
#weatherFrame { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It looks like you leaned pretty hard on ids here, which does make it easier to style things but slightly hampers re-usability of styles. |
||
display: grid; | ||
grid-template-columns: 1fr 1.5fr; | ||
gap: 30px; | ||
padding: 10px; | ||
min-width: max-content; | ||
max-width: 100%; | ||
} | ||
#weatherFrame h2{ | ||
margin-top: 0px; | ||
} | ||
|
||
#clickables{ | ||
display: flexbox; | ||
} | ||
|
||
#clickables > section{ | ||
padding: 25px; | ||
margin: 10px; | ||
background: grey; | ||
border-radius: 25px; | ||
} | ||
|
||
#tempButtonLayout { | ||
display: flex; | ||
flex-direction: row; | ||
justify-content: space-around; | ||
border-style: double; | ||
border-radius: 10px; | ||
padding: 20px; | ||
background-color: rgba(240, 255, 255, 0.225); | ||
} | ||
|
||
#tempValue { | ||
font-size: 50px; | ||
color: yellow; | ||
} | ||
|
||
#cityBlock ::placeholder{ | ||
color:lightgray; | ||
} | ||
|
||
#gardenBlock { | ||
min-width: max-content; | ||
max-width: 75%; | ||
} | ||
#gardenBlock h2{ | ||
text-align: center; | ||
} | ||
|
||
#garden { | ||
display: flex; | ||
flex-direction: column; | ||
gap: 100px; | ||
background: lightblue; | ||
border-radius: 10px; | ||
padding: 5px; | ||
text-align: center; | ||
} | ||
|
||
#dailyRange { | ||
font-size: large; | ||
background-color: rgba(134, 203, 208, 0.384); | ||
padding: 5px; | ||
border-radius: 10px; | ||
} | ||
|
||
#realTimeDisplay { | ||
display: flex; | ||
flex-direction: column; | ||
justify-content: space-around; | ||
} | ||
|
||
#titleCity { | ||
font-style: italic; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like this approach! Very clean and extensible!