historicalWeatherData.js 12.3 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
      );

Weiser's avatar
mehr    
Weiser committed
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
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
      function getData() {
        const city_text = document.getElementById("city_text").value;
        const region_text = document.getElementById("region_text").value;
        const country_text = document.getElementById("country_text").value;
        const latitude_text = document.getElementById("latitude_text").value;
        const longitude_text = document.getElementById("longitude_text").value;
        const timezone_text = document.getElementById("timezone_text").value;
    
        //Checkboxes
        const latitude = document.getElementById("latitude").checked;
        const longitude = document.getElementById("longitude").checked;
        const generationtime_ms = document.getElementById("generationtime_ms").checked;
        const utc_offset_seconds = document.getElementById("utc_offset_seconds").checked;
        const timezone = document.getElementById("timezone").checked;
        const timezone_abbreviation = document.getElementById("timezone_abbreviation").checked;
        const elevation = document.getElementById("elevation").checked;
        const hourly_time = document.getElementById("hourly_time").checked;
        const temperature_2m = document.getElementById("temperature_2m").checked;
        const relative_humidity_2m = document.getElementById("relative_humidity_2m").checked;
        const precipitation = document.getElementById("precipitation").checked;
        const surface_pressure = document.getElementById("surface_pressure").checked;
        const wind_speed_10m = document.getElementById("wind_speed_10m").checked;
        const wind_direction_10m = document.getElementById("wind_direction_10m").checked;
        const wind_gusts_10m = document.getElementById("wind_gusts_10m").checked;
        const daily_time = document.getElementById("daily_time").checked;
        const temperature_2m_max = document.getElementById("temperature_2m_max").checked;
        const temperature_2m_min = document.getElementById("temperature_2m_min").checked;
        const temperature_2m_mean = document.getElementById("temperature_2m_mean").checked;
        const precipitation_sum = document.getElementById("precipitation_sum").checked;
        const precipitation_hours = document.getElementById("precipitation_hours").checked;
        const wind_speed_10m_max = document.getElementById("wind_speed_10m_max").checked;
        const wind_gusts_10m_max = document.getElementById("wind_gusts_10m_max").checked;
        const wind_direction_10m_dominant = document.getElementById("wind_direction_10m_dominant").checked;
    
        let filterArray = [];
    
        if (latitude) {
          filterArray.push("latitude");
        }
        if (longitude) {
          filterArray.push("longitude");
        }
        if (generationtime_ms) {
          filterArray.push("generationtime_ms");
        }
        if (utc_offset_seconds) {
          filterArray.push("utc_offset_seconds");
        }
        if (timezone) {
          filterArray.push("timezone");
        }
        if (timezone_abbreviation) {
          filterArray.push("timezone_abbreviation");
        }
        if (elevation) {
          filterArray.push("elevation");
        }
        if (hourly_time) {
          filterArray.push("hourly.time");
        }
        if (temperature_2m) {
          filterArray.push("hourly.temperature_2m");
        }
        if (relative_humidity_2m) {
          filterArray.push("hourly.relative_humidity_2m");
        }
        if (precipitation) {
          filterArray.push("hourly.precipitation");
        }
        if (surface_pressure) {
          filterArray.push("hourly.surface_pressure");
        }
        if (wind_speed_10m) {
          filterArray.push("hourly.wind_speed_10m");
        }
        if (wind_direction_10m) {
          filterArray.push("hourly.wind_direction_10m");
        }
        if (wind_gusts_10m) {
          filterArray.push("hourly.wind_gusts_10m");
        }
        if (daily_time) {
          filterArray.push("daily.time");
        }
        if (temperature_2m_max) {
          filterArray.push("daily.temperature_2m_max");
        }
        if (temperature_2m_min) {
          filterArray.push("daily.temperature_2m_min");
        }
        if (temperature_2m_mean) {
          filterArray.push("daily.temperature_2m_mean");
        }
        if (precipitation_sum) {
          filterArray.push("daily.precipitation_sum");
        }
        if (precipitation_hours) {
          filterArray.push("daily.precipitation_hours");
        }
        if (wind_speed_10m_max) {
          filterArray.push("daily.wind_speed_10m_max");
        }
        if (wind_gusts_10m_max) {
          filterArray.push("daily.wind_gusts_10m_max");
        }
        if (wind_direction_10m_dominant) {
          filterArray.push("daily.wind_direction_10m_dominant");
        }    
        
        let filterString = filterArray.join(",");
Weiser's avatar
asdf  
Weiser committed
237

Weiser's avatar
mehr    
Weiser committed
238
239
240
241
        console.log("FilterString = " + filterString);
    
        const apiUrl = `http://localhost:8080/currentweather?q=${city_text}&filter=${filterString}`;
    
Weiser's avatar
asdf  
Weiser committed
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
    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;