summaryrefslogtreecommitdiff
path: root/examples/src/main/scala/webpage/Weather3.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/src/main/scala/webpage/Weather3.scala')
-rw-r--r--examples/src/main/scala/webpage/Weather3.scala55
1 files changed, 55 insertions, 0 deletions
diff --git a/examples/src/main/scala/webpage/Weather3.scala b/examples/src/main/scala/webpage/Weather3.scala
new file mode 100644
index 0000000..4dadf94
--- /dev/null
+++ b/examples/src/main/scala/webpage/Weather3.scala
@@ -0,0 +1,55 @@
+package webpage
+
+import org.scalajs.dom
+import org.scalajs.dom.{Node, Element}
+import scala.scalajs.js
+import scala.scalajs.js.annotation.JSExport
+import scalatags.JsDom.all._
+
+@JSExport
+object Weather3 extends{
+ @JSExport
+ def main(target: dom.HTMLDivElement) = {
+ import dom.extensions._
+ import scala.scalajs
+ .concurrent
+ .JSExecutionContext
+ .Implicits
+ .runNow
+
+ val url =
+ "http://api.openweathermap.org/" +
+ "data/2.5/weather?q=Singapore"
+
+ Ajax.get(url).onSuccess{ case xhr =>
+ if (xhr.status == 200) {
+ val json = js.JSON.parse(
+ xhr.responseText
+ )
+ val name = json.name.toString
+ val weather = json.weather
+ .pop()
+ .main
+ .toString
+
+ def celsius(kelvins: js.Dynamic) = {
+ kelvins.asInstanceOf[Double] - 273.15
+ }.toInt
+ val min = celsius(json.main.temp_min)
+ val max = celsius(json.main.temp_max)
+ val humid = json.main.humidity.toString
+ target.appendChild(
+ div(
+ b("Weather in Singapore:"),
+ ul(
+ li(b("Country "), name),
+ li(b("Weather "), weather),
+ li(b("Temp "), min, " - ", max),
+ li(b("Humidity "), humid, "%")
+ )
+ ).render
+ )
+ }
+ }
+ }
+} \ No newline at end of file