Showing
1 changed file
with
155 additions
and
2 deletions
... | @@ -299,11 +299,164 @@ | ... | @@ -299,11 +299,164 @@ |
299 | }) | 299 | }) |
300 | }) | 300 | }) |
301 | } | 301 | } |
302 | - } | 302 | + |
303 | - | 303 | + |
304 | + //그래프 그리기 | ||
305 | + //온도, 습도, 풍속 데이터를 array에 저장하여 그래프에 넘겨줌 | ||
306 | + var tempdata = new Array(10); | ||
307 | + var humidata = new Array(10); | ||
308 | + var winddata = new Array(10); | ||
309 | + | ||
310 | + name = document.getElementById('name').value | ||
311 | + | ||
312 | + for(let j=0; j<7; j++){ | ||
313 | + //present_time-3-j가 음수인 경우 방지 | ||
314 | + if(present_time-3-j <0){ | ||
315 | + time2 = present_time-3-j+24; | ||
316 | + date2 = yesterday_YYYYMMDD | ||
317 | + | ||
318 | + } | ||
319 | + else{ | ||
320 | + time2 = present_time-3-j | ||
321 | + date2 = YYYYMMDD | ||
322 | + } | ||
323 | + | ||
324 | + name = document.getElementById('name').value | ||
325 | + fetch('http://data.ex.co.kr/openapi/restinfo/restWeatherList?key=6806352377&type=json&sdate='+ date2 +'&stdHour=' + ('0'+String(time2)).slice(-2)).then(function(response){ | ||
326 | + //testing | ||
327 | + // fetch('http://data.ex.co.kr/openapi/restinfo/restWeatherList?key=test&type=json&sdate='+ "20220524" +'&stdHour='+ ('0'+ String(22-j)).slice(-2)).then(function(response){ | ||
328 | + method: 'GET'; | ||
329 | + body: JSON.stringify(this.obj) | ||
330 | + response.text().then(function(text){ | ||
331 | + | ||
332 | + //위와 같은 방식으로 데이터 정리 | ||
333 | + index1=text.indexOf('[') | ||
334 | + index2=text.indexOf(']') | ||
335 | + ndata=text.substr(index1+1, index2-index1+1) | ||
336 | + nndata=ndata.split('},'); | ||
337 | + | ||
338 | + //ReststopName (휴게소 이름) | ||
339 | + for(let i=0; i<nndata.length; i++){ | ||
340 | + index3=nndata[i].indexOf('"unitName":"') | ||
341 | + index4=nndata[i].indexOf('"unitCode":"') | ||
342 | + ReststopName=nndata[i].substr(index3+12, index4-index3-14) | ||
343 | + | ||
344 | + | ||
345 | + if(ReststopName == name){ | ||
346 | + //Weather | ||
347 | + index5=nndata[i].indexOf('"weatherContents":"') | ||
348 | + index6=nndata[i].indexOf('"statusNo":"') | ||
349 | + Weather=nndata[i].substr(index5+19, index6-index5-21) | ||
350 | + | ||
351 | + //temperature | ||
352 | + index7=nndata[i].indexOf('"tempValue":"') | ||
353 | + index8=nndata[i].indexOf('"dewValue":"') | ||
354 | + Temperature=nndata[i].substr(index7+13, index8-index7-20) | ||
355 | + | ||
356 | + //humidity | ||
357 | + index9=nndata[i].indexOf('"humidityValue":"') | ||
358 | + index10=nndata[i].indexOf('"windContents":"') | ||
359 | + Humidity=nndata[i].substr(index9+17, index10-index9-26) | ||
360 | + | ||
361 | + | ||
362 | + //wind | ||
363 | + index11=nndata[i].indexOf('"windValue":"') | ||
364 | + Wind=nndata[i].substr(index11+13,3) | ||
365 | + | ||
366 | + //어레이 tempdata, humidata, winddata에 각각 Temperature, Humidity, Wind 데이터 할당 | ||
367 | + tempdata[j]=Temperature; | ||
368 | + humidata[j]=Humidity; | ||
369 | + winddata[j]=Wind;} | ||
370 | + } | ||
371 | + | ||
372 | + | ||
373 | + //temperature-graph | ||
374 | + new Chart(document.getElementById("temperature-graph"), { | ||
375 | + type: 'line', | ||
376 | + data: { | ||
377 | + labels: [ '9시간 전','8시간 전','7시간 전','6시간 전','5시간 전','4시간 전','3시간 전'], | ||
378 | + | ||
379 | + datasets: [ | ||
380 | + {label: "temperature 기온 (단위: °C)", | ||
381 | + borderColor : "#7DEEBC", | ||
382 | + data: [tempdata[6], tempdata[5] ,tempdata[4] ,tempdata[3] ,tempdata[2] ,tempdata[1] ,tempdata[0] ], | ||
383 | + backgroundColor: "#D2FFD2"} | ||
384 | + ] | ||
385 | + }, | ||
386 | + | ||
387 | + options: { | ||
388 | + scales: { | ||
389 | + yAxes: [{ | ||
390 | + ticks: { | ||
391 | + min: -30, | ||
392 | + max: 40, | ||
393 | + } | ||
394 | + }] | ||
395 | + } | ||
396 | + } | ||
397 | + }); | ||
398 | + | ||
399 | + //humidity-graph | ||
400 | + new Chart(document.getElementById("humidity-graph"), { | ||
401 | + type: 'line', | ||
402 | + data: { | ||
403 | + labels: [ '9시간 전','8시간 전','7시간 전','6시간 전','5시간 전','4시간 전','3시간 전'], | ||
404 | + | ||
405 | + datasets: [ | ||
406 | + {label: "Humidity 습도 (단위: %)", | ||
407 | + borderColor : "#28B4B4", | ||
408 | + data: [humidata[6],humidata[5],humidata[4],humidata[3],humidata[2],humidata[1],humidata[0]], | ||
409 | + backgroundColor: "#98EBDC"} | ||
410 | + ] | ||
411 | + }, | ||
412 | + | ||
413 | + options: { | ||
414 | + scales: { | ||
415 | + yAxes: [{ | ||
416 | + ticks: { | ||
417 | + min: 0, | ||
418 | + max: 100, | ||
419 | + } | ||
420 | + }] | ||
421 | + } | ||
422 | + } | ||
423 | + }); | ||
424 | + | ||
425 | + //wind-graph | ||
426 | + new Chart(document.getElementById("wind-graph"), { | ||
427 | + type: 'line', | ||
428 | + data: { | ||
429 | + labels: [ '9시간 전','8시간 전','7시간 전','6시간 전','5시간 전','4시간 전','3시간 전'], | ||
430 | + | ||
431 | + datasets: [ | ||
432 | + {label: "wind velocity 풍속 (단위: m/s)", | ||
433 | + borderColor : "#82B3ED", | ||
434 | + data: [winddata[6],winddata[5],winddata[4],winddata[3],winddata[2],winddata[1],winddata[0]], | ||
435 | + backgroundColor: "#E0EBFF"} | ||
436 | + ] | ||
437 | + }, | ||
438 | + | ||
439 | + options: { | ||
440 | + scales: { | ||
441 | + yAxes: [{ | ||
442 | + ticks: { | ||
443 | + min: 0, | ||
444 | + max: 20, | ||
445 | + } | ||
446 | + }] | ||
447 | + } | ||
448 | + } | ||
449 | + }); }) | ||
450 | + | ||
451 | + }) | ||
452 | + } | ||
453 | + } | ||
304 | </script> | 454 | </script> |
305 | 455 | ||
306 | 456 | ||
457 | + <!--그래프를 그리기 위해서 chart.js를 불러옴--> | ||
458 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script> | ||
459 | + | ||
307 | 460 | ||
308 | </main> | 461 | </main> |
309 | <!-- Footer--> | 462 | <!-- Footer--> | ... | ... |
-
Please register or login to post a comment