Pavel 7 years ago
parent
commit
ae3a5757cd

+ 1 - 1
js08-CanvasProto/files/index.js

@@ -183,7 +183,7 @@ canvas.onmouseup = draw
 
 var undo = document.getElementById("undo");
 undo.onclick = function(){
-	Drawable.prototype.instances.splice(-2,2)
+	Drawable.prototype.instances.splice(-1,1)
 	Drawable.prototype.drawAll();
 	console.log(Drawable.prototype.instances)
 }

+ 65 - 0
js11XMLHttpRequest/Weather/index.html

@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>Document</title>
+	<style>
+		.weather {
+			background: #d6eeff;
+			display: inline-block;
+			text-align: center;
+			width: 100%;
+			border-bottom-left-radius: 15px;
+			border-bottom-right-radius: 15px;
+			border: 1px solid #e8e8e8;
+			margin-bottom: 20px;
+		}
+		.selects select{
+			display: block;
+			width: 100%;
+			height: 50px;
+			font-size: 20px;
+			border: 1px solid #e8e8e8;
+			padding: 10px;
+		}
+
+		.selects select:first-child {
+			border-top-left-radius: 15px;
+			border-top-right-radius: 15px;
+			margin-top: 40px;
+		}
+		.forecast {
+
+			width: 37%;
+			margin: 0 auto;
+			font-size: 20px;
+
+		}	
+		
+		body {
+			font-family: arial, sans-serif;
+			line-height: 30px;
+		}
+
+		body * {
+			box-sizing: border-box;
+			outline: none;
+		}
+
+		.forecast img {
+			width: 70px;
+			margin-bottom: 15px;
+			margin-top: 10px;
+
+		}
+	</style>
+</head>
+<body>
+	<div class="forecast">
+		<div class="selects"></div>
+		<div class="weather"></div>
+	</div>
+	
+	<script src="main.js"></script>
+</body>
+</html>

+ 92 - 0
js11XMLHttpRequest/Weather/main.js

@@ -0,0 +1,92 @@
+var request = new XMLHttpRequest() 
+var selects = document.querySelector('.selects');
+var weatherDiv = document.querySelector('.weather');
+request.open('GET', 'https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json', true) // последний параметр указывает на синхронность или асинхронность запроса. В данном случае запрос асинхронный
+
+
+request.onreadystatechange = function(){ //обработчик изменения статуса запроса. Статус == 4 сигнализирует о том, что запрос окончен.
+    if (request.readyState != 4){
+        return;
+    }
+
+    if (request.status == 200){
+        var object = JSON.parse(request.responseText);
+
+        
+        var keys = Object.keys(object);
+        var select = document.createElement("select");
+        for (var i = 0; i < keys.length; i++) {
+            var option = document.createElement("option");
+            option.innerHTML = keys[i];
+            option.value = keys[i];
+            select.appendChild(option);
+        }
+        select.onchange = function(e){
+            console.log(this.value)
+            var select = document.createElement("select");
+            for (var i = 0; i < object[this.value].length; i++) {
+                var option = document.createElement("option")
+                option.innerHTML = object[this.value][i];
+                
+
+                select.appendChild(option);
+                
+            }
+            if(selects.children.length > 1){
+                selects.replaceChild(select, document.getElementById("main").nextElementSibling);
+            }
+            else
+                selects.appendChild(select);
+            select.onchange = function(){
+
+            	request.open('GET', "https://query.yahooapis.com/v1/public/yql?" + 'q=' + encodeURIComponent("select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\'" + this.value + "\') and u='c'") + '&format=json', true);
+            	console.log(this.value)
+            	request.onreadystatechange = function(){
+            		if(request.readyState === 4 && request.status === 200){
+            			console.log(JSON.parse(request.responseText));
+            			var obj = JSON.parse(request.responseText);
+            			
+            			var weather = obj.query.results.channel.item.description;
+            			
+            			var resWeather = weather.replace(/href|CDATA|[\!]|[\[]|[\]]/g,"");
+            			var resWeather2 = resWeather.slice(1,resWeather.length - 1);
+            			var resWeather3 = resWeather2.replace(/Full Forecast at Yahoo Weather/g,"");
+            			var resWeather4 = resWeather3.slice(0,resWeather3.length - 28);
+            			weatherDiv.innerHTML = resWeather4;
+            			console.log(resWeather4)
+            			// var resObj = obj.query.results;
+            			// var keys = Object.keys(resObj);
+            			// var table = document.createElement("table");
+            			// for (var i = 0; i < keys.length; i++) {
+            			// 	var tr = document.createElement("tr");
+            			// 	var td1 = document.createElement("td");
+            			// 	var td2 = document.createElement("td");
+            			// 	td1.innerHTML = keys[i];
+            			// 	td2.innerHTML = resObj[keys[i]];
+            			// 	tr.appendChild(td1);
+            			// 	tr.appendChild(td2);
+            			// 	table.appendChild(tr);
+            			// }
+            			// document.body.appendChild(table);
+            		}
+            		else if(request.readyState > 1 && request.readyState < 4){
+            			weatherDiv.setAttribute("heigt", "400px")
+            			weatherDiv.innerHTML = "loading...";
+            		}
+            		else if(request.status === 400){
+            			weatherDiv.innerHTML = "error 400";
+            		}
+            	}
+            	request.send();
+            }
+            
+        }
+        selects.appendChild(select);
+        select.id = "main"
+            }
+            else {
+                alert('shit happens: ' +  xhr.status + ', ' + xhr.statusText );
+            }
+        }
+
+request.send()

+ 7 - 0
js11XMLHttpRequest/js11.js

@@ -0,0 +1,7 @@
+### Города-страны
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js11XMLHHttpRequest/Города-страны
+
+### Weather
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js11XMLHHttpRequest/Weather

+ 11 - 0
js11XMLHttpRequest/Города-страны/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>Document</title>
+</head>
+<body>
+	
+	<script src="main.js"></script>
+</body>
+</html>

+ 50 - 0
js11XMLHttpRequest/Города-страны/main.js

@@ -0,0 +1,50 @@
+var request = new XMLHttpRequest() 
+
+request.open('GET', 'https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json', true) // последний параметр указывает на синхронность или асинхронность запроса. В данном случае запрос асинхронный
+
+
+request.onreadystatechange = function(){ //обработчик изменения статуса запроса. Статус == 4 сигнализирует о том, что запрос окончен.
+    if (request.readyState != 4){
+        return;
+    }
+
+    if (request.status == 200){
+        alert('all ok')
+        console.log(JSON.parse(request.responseText))
+        var object = JSON.parse(request.responseText);
+
+        
+        var keys = Object.keys(object);
+        var select = document.createElement("select");
+        for (var i = 0; i < keys.length; i++) {
+            var option = document.createElement("option");
+            option.innerHTML = keys[i];
+            option.value = keys[i];
+            select.appendChild(option);
+        }
+        select.onchange = function(e){
+            console.log(this.value)
+            var select = document.createElement("select");
+            for (var i = 0; i < object[this.value].length; i++) {
+                var option = document.createElement("option")
+                option.innerHTML = object[this.value][i];
+                
+
+                select.appendChild(option);
+                
+            }
+            if(document.body.children.length === 3){
+                document.body.replaceChild(select, document.getElementById("main").nextElementSibling);
+            }
+            else
+                document.body.appendChild(select);
+        }
+        document.body.appendChild(select);
+        select.id = "main"
+            }
+            else {
+                alert('shit happens: ' +  xhr.status + ', ' + xhr.statusText );
+            }
+        }
+
+request.send()