historicalWeatherData.js 9.09 KB
Newer Older
Weiser's avatar
asdf  
Weiser committed
1
2
import React from "react";

Weiser's avatar
new    
Weiser committed
3
import "./weatherForecastData.css";
Weiser's avatar
asdf  
Weiser committed
4
5
6
7
8
9

const HistoricalWeatherData = (props) => {
    return (
        <div className="home-container">
          <div>
            <div className="thq-grid-5">
Weiser's avatar
yippie    
Weiser committed
10
              <div class="filter">
Weiser's avatar
asdf  
Weiser committed
11
12
              <div class="filter">
                <label for="location">Location:</label>
Weiser's avatar
yippie    
Weiser committed
13
                <input type="text" id="city_text" placeholder="Location" />
Weiser's avatar
asdf  
Weiser committed
14
15
                <br />
                <label for="region">Region:</label>
Weiser's avatar
yippie    
Weiser committed
16
                <input type="text" id="region_text" placeholder="Region" />
Weiser's avatar
asdf  
Weiser committed
17
18
                <br />
                <label>Country:</label>
Weiser's avatar
yippie    
Weiser committed
19
                <input type="text" id="country_text" placeholder="Country" />
Weiser's avatar
asdf  
Weiser committed
20
21
                <br />
                <label>Latitude:</label>
Weiser's avatar
yippie    
Weiser committed
22
                <input type="text" id="latitude_text" placeholder="Latitude" />
Weiser's avatar
asdf  
Weiser committed
23
                <label>Longitude:</label>
Weiser's avatar
yippie    
Weiser committed
24
                <input type="text" id="longitude_text" placeholder="Longitude" />
Weiser's avatar
asdf  
Weiser committed
25
                <br />
Weiser's avatar
yippie    
Weiser committed
26
27
                <label>Time Zone:</label>
                <input type="text" id="timezone_text" placeholder="Timezone" />
Weiser's avatar
asdf  
Weiser committed
28
                <br />
Weiser's avatar
yippie    
Weiser committed
29
30
31
              </div>
                <input type="checkbox" id="latitude" class="checkBoxFilter" />
                <label for="latitude">Latitude</label>
Weiser's avatar
asdf  
Weiser committed
32
                <br />
Weiser's avatar
yippie    
Weiser committed
33
34
                <input type="checkbox" id="longitude" class="checkBoxFilter" />
                <label for="longitude">Longitude</label>
Weiser's avatar
asdf  
Weiser committed
35
                <br />
Weiser's avatar
yippie    
Weiser committed
36
37
                <input type="checkbox" id="generationtime_ms" class="checkBoxFilter" />
                <label for="generationtime_ms">Generation Time (ms)</label>
Weiser's avatar
asdf  
Weiser committed
38
                <br />
Weiser's avatar
yippie    
Weiser committed
39
40
                <input type="checkbox" id="utc_offset_seconds" class="checkBoxFilter" />
                <label for="utc_offset_seconds">UTC Offset (Seconds)</label>
Weiser's avatar
asdf  
Weiser committed
41
                <br />
Weiser's avatar
yippie    
Weiser committed
42
43
                <input type="checkbox" id="timezone" class="checkBoxFilter" />
                <label for="timezone">Timezone</label>
Weiser's avatar
asdf  
Weiser committed
44
                <br />
Weiser's avatar
yippie    
Weiser committed
45
46
                <input type="checkbox" id="timezone_abbreviation" class="checkBoxFilter" />
                <label for="timezone_abbreviation">Timezone Abbreviation</label>
Weiser's avatar
asdf  
Weiser committed
47
                <br />
Weiser's avatar
yippie    
Weiser committed
48
49
                <input type="checkbox" id="elevation" class="checkBoxFilter" />
                <label for="elevation">Elevation</label>
Weiser's avatar
asdf  
Weiser committed
50
                <br />
Weiser's avatar
yippie    
Weiser committed
51
                <p>Hourly</p>
Weiser's avatar
asdf  
Weiser committed
52
                <br />
Weiser's avatar
yippie    
Weiser committed
53
54
                <input type="checkbox" id="hourly_time" class="checkBoxFilter" />
                <label for="hourly_time">Hourly Time</label>
Weiser's avatar
asdf  
Weiser committed
55
                <br />
Weiser's avatar
yippie    
Weiser committed
56
57
                <input type="checkbox" id="temperature_2m" class="checkBoxFilter" />
                <label for="temperature_2m">Temperature 2m</label>
Weiser's avatar
asdf  
Weiser committed
58
                <br />
Weiser's avatar
yippie    
Weiser committed
59
60
                <input type="checkbox" id="relative_humidity_2m" class="checkBoxFilter" />
                <label for="relative_humidity_2m">Relative Humidity 2m</label>
Weiser's avatar
asdf  
Weiser committed
61
                <br />
Weiser's avatar
yippie    
Weiser committed
62
63
                <input type="checkbox" id="precipitation" class="checkBoxFilter" />
                <label for="precipitation">Precipitation</label>
Weiser's avatar
asdf  
Weiser committed
64
                <br />
Weiser's avatar
yippie    
Weiser committed
65
66
                <input type="checkbox" id="surface_pressure" class="checkBoxFilter" />
                <label for="surface_pressure">Surface Pressure</label>
Weiser's avatar
asdf  
Weiser committed
67
                <br />
Weiser's avatar
yippie    
Weiser committed
68
69
                <input type="checkbox" id="wind_speed_10m" class="checkBoxFilter" />
                <label for="wind_speed_10m">Wind Speed 10m</label>
Weiser's avatar
asdf  
Weiser committed
70
                <br />
Weiser's avatar
yippie    
Weiser committed
71
72
                <input type="checkbox" id="wind_direction_10m" className="checkBoxFilter" />
                <label for="wind_direction_10m">Wind Direction 10m</label>
Weiser's avatar
asdf  
Weiser committed
73
                <br />
Weiser's avatar
yippie    
Weiser committed
74
75
                <input type="checkbox" id="wind_gusts_10m" className="checkBoxFilter" />
                <label for="wind_gusts_10m">Wind Gusts 10m</label>
Weiser's avatar
asdf  
Weiser committed
76
                <br />
Weiser's avatar
yippie    
Weiser committed
77
                <p>Dayly</p>
Weiser's avatar
asdf  
Weiser committed
78
                <br />
Weiser's avatar
yippie    
Weiser committed
79
80
                <input type="checkbox" id="daily_time" class="checkBoxFilter" />
                <label for="daily_time">Daily Time</label>
Weiser's avatar
asdf  
Weiser committed
81
                <br />
Weiser's avatar
yippie    
Weiser committed
82
83
                <input type="checkbox" id="temperature_2m_max" class="checkBoxFilter" />
                <label for="temperature_2m_max">Temperature 2m Max</label>
Weiser's avatar
asdf  
Weiser committed
84
                <br />
Weiser's avatar
yippie    
Weiser committed
85
86
                <input type="checkbox" id="temperature_2m_min" class="checkBoxFilter" />
                <label for="temperature_2m_min">Temperature 2m Min</label>
Weiser's avatar
asdf  
Weiser committed
87
                <br />
Weiser's avatar
yippie    
Weiser committed
88
89
                <input type="checkbox" id="temperature_2m_mean" class="checkBoxFilter" />
                <label for="temperature_2m_mean">Temperature 2m Mean</label>
Weiser's avatar
asdf  
Weiser committed
90
                <br />
Weiser's avatar
yippie    
Weiser committed
91
92
                <input type="checkbox" id="precipitation_sum" class="checkBoxFilter" />
                <label for="precipitation_sum">Precipitation Sum</label>
Weiser's avatar
asdf  
Weiser committed
93
                <br />
Weiser's avatar
yippie    
Weiser committed
94
95
                <input type="checkbox" id="precipitation_hours" class="checkBoxFilter" />
                <label for="precipitation_hours">Precipitation Hours</label>
Weiser's avatar
asdf  
Weiser committed
96
                <br />
Weiser's avatar
yippie    
Weiser committed
97
98
                <input type="checkbox" id="wind_speed_10m_max" class="checkBoxFilter" />
                <label for="wind_speed_10m_max">Wind Speed 10m Max</label>
Weiser's avatar
asdf  
Weiser committed
99
                <br />
Weiser's avatar
yippie    
Weiser committed
100
101
                <input type="checkbox" id="wind_gusts_10m_max" class="checkBoxFilter" />
                <label for="wind_gusts_10m_max">Wind Gusts 10m Max</label>
Weiser's avatar
asdf  
Weiser committed
102
                <br />
Weiser's avatar
yippie    
Weiser committed
103
104
                <input type="checkbox" id="wind_direction_10m_dominant" class="checkBoxFilter" />
                <label for="wind_direction_10m_dominant">Wind Direction 10m Dominant</label>
Weiser's avatar
asdf  
Weiser committed
105
                <br />
Weiser's avatar
yippie    
Weiser committed
106
107
108
109
110
111
112
113
114
                <div class="output">
              <h2>Output:</h2>
              <br />
              <pre id="weatherData"></pre>
            </div>
            <div id="apiUrl">
              <label>API URL:</label>
              <br />
              <input className="input" type="text" id="apiUrloutput" readOnly />
Weiser's avatar
asdf  
Weiser committed
115
            </div>
Weiser's avatar
yippie    
Weiser committed
116
117
118
119
120
            <button className="APIButton" onClick={searchAPI}>
              City api
            </button>
            <br />
            <br />
Weiser's avatar
asdf  
Weiser committed
121
122
          </div>
        </div>
Weiser's avatar
yippie    
Weiser committed
123
124
      </div>
    </div>
Weiser's avatar
asdf  
Weiser committed
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
      );

  function getData() {
    const city = document.getElementById("city").value;
    const region = document.getElementById("region").value;
    const country = document.getElementById("country").value;
    const latitude = document.getElementById("latitude").value;
    const longitude = document.getElementById("longitude").value;
    const temperature = document.getElementById("temperature").checked;
    const isDay = document.getElementById("isDay").checked;
    const condition = document.getElementById("condition").checked;
    const pressure = document.getElementById("pressure").checked;
    const precipitation = document.getElementById("precipitation").checked;
    const humidity = document.getElementById("humidity").checked;
    const cloud = document.getElementById("cloud").checked;
    const feelslikeTemp = document.getElementById("feelslikeTemp").checked;
    const visibility = document.getElementById("visibility").checked;
    const uv = document.getElementById("uv").checked;
    const gust = document.getElementById("gust").checked;
    const airquality = boolToWord(
      document.getElementById("airquality").checked
    );
    const unitTemperature = document.getElementById("unitTemperature").value;
    const unitWindSpeed = document.getElementById("unitWindSpeed").value;
    const unitPressure = document.getElementById("unitPressure").value;
    const unitPrecipitation =
      document.getElementById("unitPrecipitation").value;
    const output = document.getElementById("output").value;
    const format = document.getElementById("format").value;

    const apiKey = "1244099aeaee4b179e6111803241304";
    const apiUrl = `https://api.weatherapi.com/v1/current.${format}?key=${apiKey}&q=${city}&aqi=${airquality}`;

    fetch(apiUrl)
      .then((response) => {
        if (!response.ok) {
          throw new Error("Network response was not ok");
        }
        return response.json();
      })
      .then((data) => {
        // Wetterdaten anzeigen
        document.getElementById("weatherData").innerText = JSON.stringify(
          data,
          null,
          2
        );
        document.getElementById("apiUrloutput").value = apiUrl;
      })
      .catch((error) => {
        console.error("There was a problem with the fetch operation:", error);
      });
  }
  function searchAPI() {
    const cityInput = document.getElementById("city").value;

    const apiKey = "1244099aeaee4b179e6111803241304";
    const apiUrl = `https://api.weatherapi.com/v1/search.json?key=${apiKey}&q=${cityInput}`;

    fetch(apiUrl)
      .then((response) => {
        if (!response.ok) {
          throw new Error("Network response was not ok");
        }

        return response.json();
      })
      .then((data) => {
        // Wetterdaten anzeigen
        document.getElementById("weatherData").innerText = JSON.stringify(
          data,
          null,
          2
        );
      })
      .catch((error) => {
        console.error("There was a problem with the fetch operation:", error);
      });
  }

  function boolToWord(bool) {
    return bool ? "yes" : "no";
  }

};

export default HistoricalWeatherData;