Показать сообщение отдельно
  #3 (permalink)  
Старый 20.12.2022, 21:17
Новичок на форуме
Отправить личное сообщение для parshin Посмотреть профиль Найти все сообщения от parshin
 
Регистрация: 13.12.2022
Сообщений: 6

Практически все заработало, но появляется только после 1-го обновления через минуту и weather.icon; weather.description; почему то выводят undefined.
.
/* global w_out */

var city2, w_ico, w_des, temp, f_l, pressure, w_d, wind, humidity, visibility, sunrise, sunset, set_rise, t_z;
var data;
function getFile (fileName) {
    var request = new XMLHttpRequest();
    request.open('GET', fileName);
    request.onloadend = function() {
        parse(request.responseText);
    };
    request.timeout = 5000;
    request.send();
}

function parse(obj) {
    data = JSON.parse(obj);
    city2 = data.name;
    w_ico = data.weather.icon;
    w_des = data.weather.description;
    temp = data.main.temp;
    f_l = data.main.feels_like;
    pressure = data.main.pressure * 0.750063755419211;
    w_d = data.wind.deg;
    wind = data.wind.speed;
    humidity = data.main.humidity;
    visibility = data.visibility;
    sunrise = data.sys.sunrise;
    sunset = data.sys.sunset;
    set_rise = sunset - sunrise;
    t_z = data.timezone;
}

function weather(){
    const sec = 1000;
    const min = 60 * sec;
    const hour = 60 * min;
    const delay = (0 * hour) + (1 * min) + (0 * sec);
    var w_url = "weather/images/";
    if (pg === 1) w_url = "images/";
    var d = new Date();
    var month_num = d.getMonth();
    var week_num = d.getDay();
    var day = d.getDate();
    var hours = d.getHours();
    var minutes = d.getMinutes();
    var seconds = d.getSeconds();
    month = new Array("января", "февраля", "марта", "апреля", "мая", "июня",
    		      "июля", "августа", "сентября", "октября", "ноября", "декабря");
    week = new Array("воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота");
    if (day <= 9) day = "0" + day;
    if (hours <= 9) hours = "0" + hours;
    if (minutes <= 9) minutes = "0" + minutes;
    if (seconds <= 9) seconds = "0" + seconds;
  
let apiKey = "45aef403d21cba00f8464647a9595250";
let city = "Perm";
let url = `http://api.openweathermap.org/data/2.5/weather?q=${city}&lang=ru&units=metric&appid=${apiKey}`;
    getFile(url);
    temp = Math.round(temp);
    f_l = Math.round(f_l);
    pressure = Math.round(pressure);
    h1 = Math.floor(set_rise / 3600);
    set_rise = set_rise - h1 * 3600;
    m1 = Math.floor(set_rise / 60);
    if (h1 < 10) h1 = "0" + h1;
    if (m1 < 10) m1 = "0" + m1;
    set_rise = h1 + ":" + m1;
    y1 = Math.floor(sunrise / (3600 * 24 * 365));
    sunrise = sunrise - y1 * (3600 * 24 * 365);
    d1 = Math.floor(sunrise /(3600 * 24));
    sunrise = sunrise - d1 *(3600 * 24) + t_z;
    h1 = Math.floor(sunrise / 3600);
    sunrise = sunrise - h1 * 3600;
    m1 = Math.floor(sunrise / 60);
    if (h1 < 10) h1 = "0" + h1;
    if (m1 < 10) m1 = "0" + m1;
    sunrise = h1 + ":" + m1;
    y1 = Math.floor(sunset / (3600 * 24 * 365));
    sunset = sunset - y1 * (3600 * 24 * 365);
    d1 = Math.floor(sunset /(3600 * 24));
    sunset = sunset - d1 *(3600 * 24) + t_z;
    h1 = Math.floor(sunset / 3600);
    sunset = sunset - h1 * 3600;
    m1 = Math.floor(sunset / 60);
    if (h1 < 10) h1 = "0" + h1;
    if (m1 < 10) m1 = "0" + m1;
    sunset = h1 + ":" + m1;
    if (((w_d >= 351) && (w_d <= 360)) || ((w_d >= 0) && (w_d <= 11))) w_d = "северный";
    if (((w_d >= 12) && (w_d <= 34))) w_d = "северо-северо-восточный";
    if (((w_d >= 35) && (w_d <= 56))) w_d = "северо-восточный";
    if (((w_d >= 57) && (w_d <= 80))) w_d = "восточно-северо-восточный";
    if (((w_d >= 81) && (w_d <= 102))) w_d = "восточный";
    if (((w_d >= 103) && (w_d <= 125))) w_d = "восточно-юго-восточный";
    if (((w_d >= 126) && (w_d <= 148))) w_d = "юго-восточный";
    if (((w_d >= 149) && (w_d <= 170))) w_d = "юго-юго-восточный";
    if (((w_d >= 171) && (w_d <= 193))) w_d = "южный";
    if (((w_d >= 194) && (w_d <= 215))) w_d = "юго-юго-западный";
    if (((w_d >= 216) && (w_d <= 238))) w_d = "юго-западный";
    if (((w_d >= 239) && (w_d <= 260))) w_d = "западно-юго-западный";
    if (((w_d >= 261) && (w_d <= 283))) w_d = "западный";
    if (((w_d >= 284) && (w_d <= 305))) w_d = "западно-северо-западный";
    if (((w_d >= 306) && (w_d <= 328))) w_d= "северо-западный";
    if (((w_d >= 329) && (w_d <= 350))) w_d = "северо-северо-западный";

    date_time = '<div class="weather" style="text-align: center;height: 290px;width: 350px;border-style: outset; border-width: 5px; background-color:#000000;">' +
                '<table width="100%" height="100%" cellspasing="0" cellpadding="0">' +
                '<tr><td nowrap style="width: 100%;height: 100%background-size: cover;background-image: url(' + w_url +'fon0.gif)">' +
                    '<font style="font-size: 18pt;text-align: center;font-weight: bold" color="#00FFFF">' +
                        '<p style="margin-bottom: 10px;margin-top: 2px">'+city2+'</p>' +
                    '</font>' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;text-align: center"><font style="font-size: 14pt; color: #FFFFFF">' + week[week_num] + 
                    '<br>' + day + ' ' + month[month_num] + ' ' + d.getFullYear() + '</font>' +
                    '<font face="LcdD" style="font-size: 14pt;font-style: normal; color: #00FF66"> ' + hours + ':' + minutes + '</font></p>' +
                    '<font style="font-size: 13pt" color="#FFFFFF">' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;margin-left: 10px;text-align: left">Погода: ' +
                    '<img width="32" height="32" src="'+w_url+w_ico+'.png" alt=""><font color="#FFFF00"> '+w_des+'</font><br>' +
                    'Температура: <font color="#FFFF00">'+temp+'°C&nbsp;&nbsp;&nbsp;<font color="#FFFFFF"> По ощущению </font>'+f_l+'°C</font></p>' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;margin-left: 10px;text-align: left">Давление: <font color="#FFFF00">'+pressure+' мм рт. ст.</font></p>' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;margin-left: 10px;text-align: left">Ветер: <font color="#FFFF00">'+w_d+' '+wind+' м/с</font></p>' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;margin-left: 10px;text-align: left">Влажность: <font color="#FFFF00">'+humidity+'%</font></p>' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;margin-left: 10px;text-align: left">Видимость: <font color="#FFFF00">'+visibility+' м</font></p>' +
                    '<img src="' + w_url + '01d.png" width="48" height="48" alt="" align="left">' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;margin-left: 10px;text-align: left">Рассвет: <font color="#FFFF00">'+sunrise+'<font color="#FFFFFF">&nbsp;&nbsp;&nbsp;Долгота дня </font>'+set_rise+'</font></p>' +
                    '<p style="margin-bottom: 2px;margin-top: 2px;margin-left: 10px;text-align: left">Закат: <font color="#FFFF00">'+sunset+'</font></p>' +
            '</font></td></tr></table></div>';
    w_out.innerHTML = date_time;
    setTimeout(() => weather(), delay);
}

Последний раз редактировалось parshin, 20.12.2022 в 21:41.
Ответить с цитированием