@idmui/spot 0.6.2 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4571 +1,14 @@
1
- import H from "moment";
2
- import j from "moment-timezone";
3
- import { ArrowRightBold as ft, Calendar as yt, Download as vt, Search as Dt } from "@element-plus/icons-vue";
4
- import { LngLatHelper as Je } from "@idm-plugin/geo";
5
- import * as Qe from "echarts";
6
- import { markRaw as xt, resolveComponent as ze, openBlock as r, createElementBlock as l, createElementVNode as s, createVNode as ke, withCtx as Pe, Fragment as ue, renderList as fe, createBlock as Re, normalizeClass as ye, toDisplayString as m, createTextVNode as se, createCommentVNode as Ne, withDirectives as Ze, vShow as Ve, normalizeStyle as Le } from "vue";
7
- import Fe from "axios";
8
- const Xe = [
9
- {
10
- rank: 0,
11
- name: "Best Match",
12
- alias: "BEST MATCH",
13
- model: "best_match",
14
- models: ["best_match"]
15
- },
16
- {
17
- rank: 1,
18
- name: "GFS",
19
- alias: "GFS",
20
- model: "gfs_seamless",
21
- provider: "NOAA",
22
- country: "United States",
23
- resolution: 25,
24
- tips: "3-25km",
25
- length: 16,
26
- frequency: 1,
27
- // models: ['gfs_seamless', 'gfs_global', 'gfs_hrrr', 'ncep_nbm_conus', 'gfs_graphcast025'],
28
- models: ["gfs_seamless"],
29
- // ncep_gfs013: 美国国家环境预报中心(NCEP)的全球预报系统(GFS),0.13度
30
- // ncep_gfs025: 美国国家环境预报中心(NCEP)的全球预报系统(GFS),0.25度
31
- // ncep_gfs_graphcast025: 是美国国家环境预测中心(NCEP)设立的一个实验性中期全球天气预报系统
32
- // ncep_hrrr_conus: 美国国家环境预报中心(NCEP)的高分辨率快速更新(HRRR)系统针对美国本土(CONUS)的气象预报产品和服务
33
- // ncep_nbm_conus: 美国国家环境预报中心(NCEP)的国家多模式融合预报系统(NBM)针对美国本土(CONUS)的部分
34
- categories: "ncep_gfs013,ncep_gfs025,ncep_gfs_graphcast025,ncep_hrrr_conus,ncep_nbm_conus",
35
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
36
- },
37
- {
38
- rank: 2,
39
- name: "ECMWF",
40
- alias: "ECMWF",
41
- model: "ecmwf_ifs025",
42
- provider: "ECMWF",
43
- country: "European Union",
44
- resolution: 25,
45
- tips: "25km",
46
- length: 15,
47
- frequency: 6,
48
- models: ["ecmwf_ifs025", "ecmwf_aifs025_single"],
49
- categories: "ecmwf_ifs025,ecmwf_aifs025_single",
50
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
51
- },
52
- {
53
- rank: 3,
54
- disabled: !0,
55
- name: "ICON",
56
- alias: "ECMWF",
57
- model: "icon_seamless",
58
- provider: "Deutscher Wetterdienst (DWD)",
59
- country: "Germany",
60
- resolution: 13,
61
- tips: "2-13km",
62
- length: 7.5,
63
- frequency: 3,
64
- models: ["icon_seamless", "icon_global", "icon_eu", "icon_d2"],
65
- categories: "dwd_icon,dwd_icon_eps,dwd_icon_d2,dwd_icon_d2_eps,dwd_icon_eu,dwd_icon_eu_eps",
66
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
67
- },
68
- {
69
- rank: 4,
70
- name: "ARPEGE",
71
- disabled: !0,
72
- alias: "ECMWF",
73
- model: "arpege_seamless",
74
- provider: "Météo-France",
75
- country: "France",
76
- resolution: 25,
77
- tips: "1-25km",
78
- length: 4,
79
- frequency: 1,
80
- models: ["arpege_seamless", "arpege_world", "arpege_europe"],
81
- categories: "meteofrance_arpege_europe,meteofrance_arpege_europe_probabilities,meteofrance_arpege_world025",
82
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
83
- },
84
- {
85
- rank: 5,
86
- name: "UKMO",
87
- disabled: !0,
88
- alias: "ECMWF",
89
- model: "ukmo_seamless",
90
- provider: "UK Met Office",
91
- country: "United Kingdom",
92
- resolution: 10,
93
- tips: "2-10km",
94
- length: 7,
95
- frequency: 1,
96
- models: ["ukmo_seamless", "ukmo_global_deterministic_10km", "ukmo_uk_deterministic_2km"],
97
- categories: "ukmo_global_deterministic_10km,ukmo_uk_deterministic_2km",
98
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
99
- },
100
- {
101
- rank: 6,
102
- name: "JMA",
103
- disabled: !0,
104
- alias: "GFS",
105
- model: "jma_seamless",
106
- provider: "JMA",
107
- country: "Japan",
108
- resolution: 55,
109
- tips: "5-55km",
110
- length: 11,
111
- frequency: 3,
112
- models: ["jma_seamless", "jma_msm", "jma_gsm"],
113
- categories: "jma_gsm,jma_msm",
114
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
115
- },
116
- {
117
- rank: 7,
118
- name: "GEM",
119
- disabled: !0,
120
- alias: "GFS",
121
- model: "gem_seamless",
122
- provider: "Canadian Weather Service",
123
- country: "Canada",
124
- resolution: 2.5,
125
- tips: "2.5km",
126
- length: 10,
127
- frequency: 6,
128
- models: ["gem_seamless", "gem_global", "gem_regional"],
129
- // cmc_gem_gdps: 加拿大气象中心(CMC)基于全球环境多尺度(GEM)模型的全球确定性预报系统(Global Deterministic Prediction System),耦合了大气(GEM)、海洋和海冰(NEMO - CICE)的确定性数值天气预报模型
130
- // cmc_gem_hrdps: 加拿大气象中心(CMC)全球环境多尺度(GEM)模型的高分辨率确定性预报系统(High - Resolution Deterministic Prediction System),覆盖加拿大地区
131
- // cmc_gem_rdps: 拿大气象中心(CMC)的全球环境多尺度(GEM)模型的区域确定性预报系统(Regional Deterministic Prediction System),盖北美地区和北极地区
132
- categories: "cmc_gem_gdps,cmc_gem_hrdps,cmc_gem_rdps",
133
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
134
- },
135
- {
136
- rank: 8,
137
- name: "GRAPES",
138
- disabled: !0,
139
- alias: "GFS",
140
- model: "cma_grapes_global",
141
- provider: "China Meteorological Administration (CMA)",
142
- country: "China",
143
- resolution: 15,
144
- tips: "15km",
145
- length: 10,
146
- frequency: 6,
147
- models: ["cma_grapes_global"],
148
- categories: "cma_grapes_global",
149
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
150
- },
151
- {
152
- rank: 9,
153
- name: "ACCESS-G",
154
- disabled: !0,
155
- alias: "GFS",
156
- model: "bom_access_global",
157
- provider: "Australian Bureau of Meteorology (BOM)",
158
- country: "Australia",
159
- resolution: 15,
160
- tips: "15km",
161
- length: 10,
162
- frequency: 6,
163
- models: ["bom_access_global"],
164
- categories: "bom_access_global",
165
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
166
- }
167
- ], qe = [
168
- {
169
- rank: 0,
170
- name: "Best Match",
171
- alias: "BEST MATCH",
172
- model: "best_match",
173
- models: ["best_match"]
174
- },
175
- {
176
- rank: 1,
177
- name: "MFWAM",
178
- alias: "ECMWF",
179
- model: "meteofrance_wave",
180
- provider: "MeteoFrance",
181
- country: "France",
182
- resolution: 8,
183
- tips: "8km",
184
- length: 10,
185
- frequency: 12,
186
- models: ["meteofrance_wave"],
187
- categories: "meteofrance_wave",
188
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
189
- },
190
- {
191
- rank: 2,
192
- disabled: !0,
193
- name: "SMOC",
194
- alias: "ECMWF",
195
- model: "meteofrance_currents",
196
- provider: "MeteoFrance",
197
- country: "France",
198
- resolution: 8,
199
- tips: "8km",
200
- length: 10,
201
- frequency: 24,
202
- models: ["meteofrance_currents"],
203
- categories: "meteofrance_currents, meteofrance_sea_surface_temperature",
204
- variables: "ocean_u_current,ocean_v_current,invert_barometer_height,sea_level_height_msl,sea_surface_temperature"
205
- },
206
- {
207
- rank: 3,
208
- disabled: !0,
209
- name: "EWAM",
210
- alias: "ECMWF",
211
- model: "ewam",
212
- provider: "DWD",
213
- country: "Germany",
214
- resolution: 5,
215
- tips: "5km",
216
- length: 8,
217
- frequency: 2,
218
- models: ["ewam"],
219
- categories: "dwd_ewam",
220
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
221
- },
222
- {
223
- rank: 4,
224
- disabled: !0,
225
- name: "GWAM",
226
- alias: "ECMWF",
227
- model: "gwam",
228
- provider: "DWD",
229
- country: "Germany",
230
- resolution: 5,
231
- tips: "5km",
232
- length: 4,
233
- frequency: 2,
234
- models: ["gwam"],
235
- categories: "dwd_gwam",
236
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
237
- },
238
- {
239
- rank: 5,
240
- disabled: !0,
241
- name: "ECWAM",
242
- alias: "ECMWF",
243
- model: "ecmwf_wam025",
244
- provider: "ECMWF",
245
- country: "Europe",
246
- resolution: 25,
247
- tips: "25km",
248
- length: 10,
249
- frequency: 6,
250
- models: ["ecmwf_wam025"],
251
- categories: "ecmwf_wam025",
252
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
253
- },
254
- {
255
- rank: 6,
256
- name: "GFSWave",
257
- alias: "GFS",
258
- model: "ncep_gfswave025",
259
- provider: "NCEP",
260
- country: "USA",
261
- resolution: 25,
262
- tips: "25km",
263
- length: 10,
264
- frequency: 6,
265
- models: ["ncep_gfswave025", "ncep_gfswave016"],
266
- categories: "ncep_gfswave025,ncep_gfswave016",
267
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
268
- },
269
- {
270
- rank: 7,
271
- disabled: !0,
272
- name: "ERA5-Ocean",
273
- alias: "ECMWF",
274
- model: "era5_ocean",
275
- provider: "Copernicus",
276
- country: "Europe",
277
- resolution: 50,
278
- tips: "50km",
279
- length: -5,
280
- frequency: 1,
281
- models: ["era5_ocean"],
282
- categories: "copernicus_era5_ocean",
283
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
284
- }
285
- ];
286
- class Te {
287
- static standardWeatherModels() {
288
- return Xe.filter((e) => !e.disabled && e.alias);
289
- }
290
- static standardMarineModels() {
291
- return qe.filter((e) => !e.disabled && e.alias);
292
- }
293
- static autoPickMeteoModel(e = "best_match") {
294
- var a, h;
295
- const t = e.toLowerCase().split(","), o = [], p = [];
296
- for (const f of t) {
297
- let I = Xe.find((x) => {
298
- var C, Q, N;
299
- return ((C = x.models) == null ? void 0 : C.includes(f)) || ((Q = x.alias) == null ? void 0 : Q.toLowerCase()) === f || ((N = x.name) == null ? void 0 : N.toLowerCase()) === f;
300
- }), b = qe.find((x) => {
301
- var C, Q, N;
302
- return ((C = x.models) == null ? void 0 : C.includes(f)) || ((Q = x.alias) == null ? void 0 : Q.toLowerCase()) === f || ((N = x.name) == null ? void 0 : N.toLowerCase()) === f;
303
- });
304
- I = I || Xe.find((x) => {
305
- var C, Q;
306
- return ((C = x.alias) == null ? void 0 : C.toLowerCase()) === ((Q = b == null ? void 0 : b.alias) == null ? void 0 : Q.toLowerCase());
307
- }), b = b || qe.find((x) => {
308
- var C, Q;
309
- return ((C = x.alias) == null ? void 0 : C.toLowerCase()) === ((Q = I == null ? void 0 : I.alias) == null ? void 0 : Q.toLowerCase());
310
- }), I = I || Xe[0], b = b || qe[0], o.push((a = I.models) != null && a.includes(f) ? f : I.model), p.push((h = b.models) != null && h.includes(f) ? f : b.model);
311
- }
312
- return {
313
- weatherModels: o.join(","),
314
- marineModels: p.join(",")
315
- };
316
- }
317
- static pickHourly(e, a) {
318
- var h, t, o, p, f, I, b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re, le, ie, c, ve, E, z, F, pe, A, Ae, ne, ge, he, Ce, Be;
319
- const de = typeof a == "string" ? H(a) : a, ce = e == null ? void 0 : e.weather, B = e == null ? void 0 : e.marine, be = H((t = (h = ce == null ? void 0 : ce[0]) == null ? void 0 : h.hourly) == null ? void 0 : t.date).utc(), O = be.clone().add((f = (p = (o = ce == null ? void 0 : ce[0]) == null ? void 0 : o.hourly) == null ? void 0 : p.time) == null ? void 0 : f.at(0), "h"), $ = be.clone().add((x = (b = (I = ce == null ? void 0 : ce[0]) == null ? void 0 : I.hourly) == null ? void 0 : b.time) == null ? void 0 : x.at(-1), "h"), we = [];
320
- if (de.isBetween(O, $, "millisecond", "[]")) {
321
- const v = de.utc().diff(O, "h", !1);
322
- let i, g;
323
- if (ce) {
324
- let me = 0, Ee = 0;
325
- for (const y of ce) {
326
- const oe = y.hourly;
327
- for (let xe = v - (v - 1) % 3; xe <= v; xe++)
328
- me += (C = oe.precipitation) == null ? void 0 : C.at(xe);
329
- for (let xe = v - (v - 1) % 6; xe <= v; xe++)
330
- Ee += (Q = oe.precipitation) == null ? void 0 : Q.at(xe);
331
- i = {
332
- temp: (N = oe.temperature_2m) == null ? void 0 : N.at(v),
333
- apparentTemp: (ee = oe.apparent_temperature) == null ? void 0 : ee.at(v),
334
- rh: (te = oe.relative_humidity_2m) == null ? void 0 : te.at(v),
335
- dp: (ae = oe.dew_point_2m) == null ? void 0 : ae.at(v),
336
- precip: {
337
- probability: (_ = oe.precipitation_probability) == null ? void 0 : _.at(v),
338
- sum: (Y = oe.precipitation) == null ? void 0 : Y.at(v),
339
- sum3Hours: Math.round(me * 100) / 100,
340
- sum6Hours: Math.round(Ee * 100) / 100
341
- },
342
- pmsl: (K = oe.pressure_msl) == null ? void 0 : K.at(v),
343
- psurf: (U = oe.surface_pressure) == null ? void 0 : U.at(v),
344
- code: (R = oe.weather_code) == null ? void 0 : R.at(v),
345
- visibility: this.m2nm((W = oe.visibility) == null ? void 0 : W.at(v)),
346
- wind: {
347
- speed: (X = oe.wind_speed_10m) == null ? void 0 : X.at(v),
348
- kts: (q = oe.wind_speed_10m) == null ? void 0 : q.at(v),
349
- degree: (J = oe.wind_direction_10m) == null ? void 0 : J.at(v),
350
- bearing: ((Z = oe.wind_direction_10m) == null ? void 0 : Z.at(v)) !== null ? (((V = oe.wind_direction_10m) == null ? void 0 : V.at(v)) + 180) % 360 : null,
351
- gusts: (w = oe.wind_gusts_10m) == null ? void 0 : w.at(v)
352
- },
353
- isDay: (S = oe.is_day) == null ? void 0 : S.at(v)
354
- };
355
- const { name: De, url: d, bg: L } = this.parseWeatherCode(i.code, i.isDay);
356
- i.name = De, i.url = d, i.bg = L, i.wind.scale = this.beaufort(this.kts2ms(i.wind.kts)), i.wind.direction = this.degree2Direction(i.wind.degree), we.push({
357
- utc: O.add(v, "h").format(),
358
- model: y.model,
359
- weather: { ...i }
360
- });
361
- }
362
- }
363
- if (B) {
364
- let me = 0;
365
- for (const Ee of B) {
366
- const y = Ee.hourly;
367
- g = {
368
- wave: {
369
- sig: {
370
- height: (T = y.wave_height) == null ? void 0 : T.at(v),
371
- degree: (P = y.wave_direction) == null ? void 0 : P.at(v),
372
- bearing: ((u = y.wave_direction) == null ? void 0 : u.at(v)) !== null ? (((G = y.wave_direction) == null ? void 0 : G.at(v)) + 180) % 360 : null,
373
- period: (M = y.wave_period) == null ? void 0 : M.at(v)
374
- },
375
- swell: {
376
- height: (k = y.swell_wave_height) == null ? void 0 : k.at(v),
377
- degree: (D = y.swell_wave_direction) == null ? void 0 : D.at(v),
378
- bearing: ((re = y.swell_wave_direction) == null ? void 0 : re.at(v)) !== null ? (((le = y.swell_wave_direction) == null ? void 0 : le.at(v)) + 180) % 360 : null,
379
- period: (ie = y.swell_wave_period) == null ? void 0 : ie.at(v),
380
- peakPeriod: (c = y.swell_wave_peak_period) == null ? void 0 : c.at(v)
381
- },
382
- wd: {
383
- height: (ve = y.wind_wave_height) == null ? void 0 : ve.at(v),
384
- degree: (E = y.wind_wave_direction) == null ? void 0 : E.at(v),
385
- bearing: ((z = y.wind_wave_direction) == null ? void 0 : z.at(v)) !== null ? (((F = y.wind_wave_direction) == null ? void 0 : F.at(v)) + 180) % 360 : null,
386
- period: (pe = y.wind_wave_period) == null ? void 0 : pe.at(v),
387
- peakPeriod: (A = y.wind_wave_peak_period) == null ? void 0 : A.at(v)
388
- }
389
- },
390
- current: {
391
- speed: (Ae = y.ocean_current_velocity) == null ? void 0 : Ae.at(v),
392
- kts: (ne = y.ocean_current_velocity) == null ? void 0 : ne.at(v),
393
- degree: (ge = y.ocean_current_direction) == null ? void 0 : ge.at(v),
394
- bearing: ((he = y.ocean_current_direction) == null ? void 0 : he.at(v)) ?? null
395
- },
396
- sst: (Ce = y.sea_surface_temperature) == null ? void 0 : Ce.at(v),
397
- height: (Be = y.sea_level_height_msl) == null ? void 0 : Be.at(v)
398
- }, g.wave = this.parseWave(g.wave), g.current.direction = this.degree2Direction(g.current.degree), Object.assign(we[me], g), me++;
399
- }
400
- }
401
- }
402
- return we;
403
- }
404
- static toLegacy(e) {
405
- var a, h, t, o, p, f, I, b, x, C;
406
- return {
407
- wind: (a = e == null ? void 0 : e.weather) == null ? void 0 : a.wind,
408
- visibility: (h = e == null ? void 0 : e.weather) == null ? void 0 : h.visibility,
409
- temp: (t = e == null ? void 0 : e.weather) == null ? void 0 : t.temp,
410
- prmsl: (o = e == null ? void 0 : e.weather) == null ? void 0 : o.pmsl,
411
- gusts: {
412
- kts: (f = (p = e == null ? void 0 : e.weather) == null ? void 0 : p.wind) == null ? void 0 : f.gusts
413
- },
414
- precip: (I = e == null ? void 0 : e.weather) == null ? void 0 : I.precip,
415
- code: (b = e == null ? void 0 : e.weather) == null ? void 0 : b.code,
416
- name: (x = e == null ? void 0 : e.weather) == null ? void 0 : x.name,
417
- url: (C = e == null ? void 0 : e.weather) == null ? void 0 : C.url,
418
- wave: e == null ? void 0 : e.wave,
419
- current: e == null ? void 0 : e.current,
420
- sst: e == null ? void 0 : e.sst,
421
- height: e == null ? void 0 : e.height,
422
- utc: e == null ? void 0 : e.utc,
423
- source: e == null ? void 0 : e.model
424
- };
425
- }
426
- static pickDaily(e, a) {
427
- var h, t, o, p, f, I, b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re, le, ie, c, ve, E, z, F, pe, A;
428
- const Ae = typeof a == "string" ? H(a) : a, ne = e == null ? void 0 : e.weather, ge = e == null ? void 0 : e.marine, he = H((o = (t = (h = ne == null ? void 0 : ne[0]) == null ? void 0 : h.daily) == null ? void 0 : t.time) == null ? void 0 : o.at(0)), Ce = H((I = (f = (p = ne == null ? void 0 : ne[0]) == null ? void 0 : p.daily) == null ? void 0 : f.time) == null ? void 0 : I.at(-1)), Be = [];
429
- if (Ae.isBetween(he, Ce, "millisecond", "[]")) {
430
- let de, ce;
431
- const B = Ae.diff(he, "d", !1);
432
- if (ne)
433
- for (const be of ne) {
434
- const O = be.daily;
435
- de = {
436
- code: (b = O.weather_code) == null ? void 0 : b.at(B),
437
- temp: {
438
- max: (x = O.temperature_2m_max) == null ? void 0 : x.at(B),
439
- min: (C = O.temperature_2m_min) == null ? void 0 : C.at(B),
440
- mean: (Q = O.temperature_2m_mean) == null ? void 0 : Q.at(B)
441
- },
442
- apparentTemp: {
443
- max: (N = O.apparent_temperature_max) == null ? void 0 : N.at(B),
444
- min: (ee = O.apparent_temperature_min) == null ? void 0 : ee.at(B)
445
- },
446
- precip: {
447
- sum: (te = O.precipitation_sum) == null ? void 0 : te.at(B),
448
- rainSum: (ae = O.rain_sum) == null ? void 0 : ae.at(B),
449
- snowfallSum: (_ = O.snowfall_sum) == null ? void 0 : _.at(B),
450
- showersSum: (Y = O.showers_sum) == null ? void 0 : Y.at(B),
451
- hours: (K = O.precipitation_hours) == null ? void 0 : K.at(B),
452
- probability: (U = O.precipitation_probability_max) == null ? void 0 : U.at(B)
453
- },
454
- rh: {
455
- max: (R = O.relative_humidity_2m_max) == null ? void 0 : R.at(B),
456
- min: (W = O.relative_humidity_2m_min) == null ? void 0 : W.at(B),
457
- mean: (X = O.relative_humidity_2m_mean) == null ? void 0 : X.at(B)
458
- },
459
- wind: {
460
- speed: (q = O.wind_speed_10m_max) == null ? void 0 : q.at(B),
461
- kts: (J = O.wind_speed_10m_max) == null ? void 0 : J.at(B),
462
- degree: (Z = O.wind_direction_10m_dominant) == null ? void 0 : Z.at(B),
463
- gusts: (V = O.wind_gusts_10m_max) == null ? void 0 : V.at(B),
464
- bearing: ((w = O.wind_direction_10m_dominant) == null ? void 0 : w.at(B)) !== null ? (((S = O.wind_direction_10m_dominant) == null ? void 0 : S.at(B)) + 180) % 360 : null
465
- }
466
- };
467
- const { name: $, url: we, bg: v } = this.parseWeatherCode(de.code, !0);
468
- de.name = $, de.url = we, de.bg = v, de.wind.scale = this.beaufort(this.kts2ms(de.wind.kts)), de.wind.direction = this.degree2Direction(de.wind.degree), Be.push({
469
- utc: he.add(B, "d").utc().format(),
470
- model: be.model,
471
- weather: { ...de }
472
- });
473
- }
474
- if (ge) {
475
- let be = 0;
476
- for (const O of ge) {
477
- const $ = O.daily;
478
- ce = {
479
- wave: {
480
- sig: {
481
- height: (T = $.wave_height_max) == null ? void 0 : T.at(B),
482
- degree: (P = $.wave_direction_dominant) == null ? void 0 : P.at(B),
483
- period: (u = $.wave_period_max) == null ? void 0 : u.at(B),
484
- bearing: ((G = $.wave_direction_dominant) == null ? void 0 : G.at(B)) !== null ? (((M = $.wave_direction_dominant) == null ? void 0 : M.at(B)) + 180) % 360 : null
485
- },
486
- swell: {
487
- height: (k = $.swell_wave_height_max) == null ? void 0 : k.at(B),
488
- degree: (D = $.swell_wave_direction_dominant) == null ? void 0 : D.at(B),
489
- period: (re = $.swell_wave_period_max) == null ? void 0 : re.at(B),
490
- peakPeriod: (le = $.swell_wave_peak_period_max) == null ? void 0 : le.at(B),
491
- bearing: ((ie = $.swell_wave_direction_dominant) == null ? void 0 : ie.at(B)) !== null ? (((c = $.swell_wave_direction_dominant) == null ? void 0 : c.at(B)) + 180) % 360 : null
492
- },
493
- wd: {
494
- height: (ve = $.wind_wave_height_max) == null ? void 0 : ve.at(B),
495
- degree: (E = $.wind_wave_direction_dominant) == null ? void 0 : E.at(B),
496
- period: (z = $.wind_wave_period_max) == null ? void 0 : z.at(B),
497
- peakPeriod: (F = $.wind_wave_peak_period_max) == null ? void 0 : F.at(B),
498
- bearing: ((pe = $.wind_wave_direction_dominant) == null ? void 0 : pe.at(B)) !== null ? (((A = $.wind_wave_direction_dominant) == null ? void 0 : A.at(B)) + 180) % 360 : null
499
- }
500
- }
501
- }, ce.wave = this.parseWave(ce.wave), Object.assign(Be[be], ce), be++;
502
- }
503
- }
504
- }
505
- return Be;
506
- }
507
- static parseWave(e) {
508
- return e.sig.direction = this.degree2Direction(e.sig.degree), e.swell.direction = this.degree2Direction(e.swell.degree), e.wd.direction = this.degree2Direction(e.wd.degree), e.sig.scale = this.douglas(e.sig.height), e.swell.scale = this.douglas(e.swell.height), e.wd.scale = this.douglas(e.wd.height), e;
509
- }
510
- static parseWeatherCode(e, a) {
511
- const h = this.weatherCode(e);
512
- return (a ? h.day : h.night) || {};
513
- }
514
- static weatherCode(e) {
515
- const a = {
516
- code: e
517
- };
518
- switch (e) {
519
- case 0:
520
- a.day = {
521
- name: "Sunny",
522
- url: "https://osshz.idmwx.com/asset/weather/01d.svg",
523
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
524
- }, a.night = {
525
- name: "Clear",
526
- url: "https://osshz.idmwx.com/asset/weather/01n.svg",
527
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
528
- };
529
- break;
530
- case 1:
531
- a.day = {
532
- name: "Mainly Sunny",
533
- url: "https://osshz.idmwx.com/asset/weather/01d.svg",
534
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
535
- }, a.night = {
536
- name: "Mainly Clear",
537
- url: "https://osshz.idmwx.com/asset/weather/01n.svg",
538
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
539
- };
540
- break;
541
- case 2:
542
- a.day = {
543
- name: "Partly Cloudy",
544
- url: "https://osshz.idmwx.com/asset/weather/02d.svg",
545
- bg: "https://osshz.idmwx.com/asset/weather/bg2.png"
546
- }, a.night = {
547
- name: "Partly Cloudy",
548
- url: "https://osshz.idmwx.com/asset/weather/02n.svg",
549
- bg: "https://osshz.idmwx.com/asset/weather/bg2.png"
550
- };
551
- break;
552
- case 3:
553
- a.day = {
554
- name: "Overcast",
555
- url: "https://osshz.idmwx.com/asset/weather/04d.svg",
556
- bg: "https://osshz.idmwx.com/asset/weather/bg3.png"
557
- }, a.night = {
558
- name: "Overcast",
559
- url: "https://osshz.idmwx.com/asset/weather/04n.svg",
560
- bg: "https://osshz.idmwx.com/asset/weather/bg3.png"
561
- };
562
- break;
563
- case 45:
564
- a.day = {
565
- name: "Foggy",
566
- url: "https://osshz.idmwx.com/asset/weather/50d.svg",
567
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
568
- }, a.night = {
569
- name: "Foggy",
570
- url: "https://osshz.idmwx.com/asset/weather/50n.svg",
571
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
572
- };
573
- break;
574
- case 48:
575
- a.day = {
576
- name: "Rime Fog",
577
- url: "https://osshz.idmwx.com/asset/weather/50d.svg",
578
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
579
- }, a.night = {
580
- name: "Rime Fog",
581
- url: "https://osshz.idmwx.com/asset/weather/50n.svg",
582
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
583
- };
584
- break;
585
- case 51:
586
- a.day = {
587
- name: "Light Drizzle",
588
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
589
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
590
- }, a.night = {
591
- name: "Light Drizzle",
592
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
593
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
594
- };
595
- break;
596
- case 53:
597
- a.day = {
598
- name: "Drizzle",
599
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
600
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
601
- }, a.night = {
602
- name: "Drizzle",
603
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
604
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
605
- };
606
- break;
607
- case 55:
608
- a.day = {
609
- name: "Heavy Drizzle",
610
- url: "https://osshz.idmwx.com/asset/weather/15d.svg",
611
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
612
- }, a.night = {
613
- name: "Heavy Drizzle",
614
- url: "https://osshz.idmwx.com/asset/weather/15n.svg",
615
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
616
- };
617
- break;
618
- case 56:
619
- a.day = {
620
- name: "Light Freezing Drizzle",
621
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
622
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
623
- }, a.night = {
624
- name: "Light Freezing Drizzle",
625
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
626
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
627
- };
628
- break;
629
- case 57:
630
- a.day = {
631
- name: "Freezing Drizzle",
632
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
633
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
634
- }, a.night = {
635
- name: "Freezing Drizzle",
636
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
637
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
638
- };
639
- break;
640
- case 61:
641
- a.day = {
642
- name: "Light Rain",
643
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
644
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
645
- }, a.night = {
646
- name: "Light Rain",
647
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
648
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
649
- };
650
- break;
651
- case 63:
652
- a.day = {
653
- name: "Rain",
654
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
655
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
656
- }, a.night = {
657
- name: "Rain",
658
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
659
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
660
- };
661
- break;
662
- case 65:
663
- a.day = {
664
- name: "Heavy Rain",
665
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
666
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
667
- }, a.night = {
668
- name: "Heavy Rain",
669
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
670
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
671
- };
672
- break;
673
- case 66:
674
- a.day = {
675
- name: "Light Freezing Rain",
676
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
677
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
678
- }, a.night = {
679
- name: "Light Freezing Rain",
680
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
681
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
682
- };
683
- break;
684
- case 67:
685
- a.day = {
686
- name: "Freezing Rain",
687
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
688
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
689
- }, a.night = {
690
- name: "Freezing Rain",
691
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
692
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
693
- };
694
- break;
695
- case 71:
696
- a.day = {
697
- name: "Light Snow",
698
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
699
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
700
- }, a.night = {
701
- name: "Light Snow",
702
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
703
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
704
- };
705
- break;
706
- case 73:
707
- a.day = {
708
- name: "Snow",
709
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
710
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
711
- }, a.night = {
712
- name: "Snow",
713
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
714
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
715
- };
716
- break;
717
- case 75:
718
- a.day = {
719
- name: "Heavy Snow",
720
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
721
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
722
- }, a.night = {
723
- name: "Heavy Snow",
724
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
725
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
726
- };
727
- break;
728
- case 77:
729
- a.day = {
730
- name: "Snow Grains",
731
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
732
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
733
- }, a.night = {
734
- name: "Snow Grains",
735
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
736
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
737
- };
738
- break;
739
- case 80:
740
- a.day = {
741
- name: "Light Showers",
742
- url: "https://osshz.idmwx.com/asset/weather/09d.svg",
743
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
744
- }, a.night = {
745
- name: "Light Showers",
746
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
747
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
748
- };
749
- break;
750
- case 81:
751
- a.day = {
752
- name: "Showers",
753
- url: "https://osshz.idmwx.com/asset/weather/09d.svg",
754
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
755
- }, a.night = {
756
- name: "Showers",
757
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
758
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
759
- };
760
- break;
761
- case 82:
762
- a.day = {
763
- name: "Heavy Showers",
764
- url: "https://osshz.idmwx.com/asset/weather/09d.svg",
765
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
766
- }, a.night = {
767
- name: "Heavy Showers",
768
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
769
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
770
- };
771
- break;
772
- case 85:
773
- a.day = {
774
- name: "Light Snow Showers",
775
- url: "https://osshz.idmwx.com/asset/weather/13d.svg",
776
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
777
- }, a.night = {
778
- name: "Light Snow Showers",
779
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
780
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
781
- };
782
- break;
783
- case 86:
784
- a.day = {
785
- name: "Snow Showers",
786
- url: "https://osshz.idmwx.com/asset/weather/13d.svg",
787
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
788
- }, a.night = {
789
- name: "Snow Showers",
790
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
791
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
792
- };
793
- break;
794
- case 95:
795
- a.day = {
796
- name: "Thunderstorm",
797
- url: "https://osshz.idmwx.com/asset/weather/11d.svg",
798
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
799
- }, a.night = {
800
- name: "Thunderstorm",
801
- url: "https://osshz.idmwx.com/asset/weather/11n.svg",
802
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
803
- };
804
- break;
805
- case 96:
806
- a.day = {
807
- name: "Light Thunderstorms With Hail",
808
- url: "https://osshz.idmwx.com/asset/weather/11d.svg",
809
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
810
- }, a.night = {
811
- name: "Light Thunderstorms With Hail",
812
- url: "https://osshz.idmwx.com/asset/weather/11n.svg",
813
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
814
- };
815
- break;
816
- case 99:
817
- a.day = {
818
- name: "Thunderstorms With Hail",
819
- url: "https://osshz.idmwx.com/asset/weather/11d.svg",
820
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
821
- }, a.night = {
822
- name: "Thunderstorms With Hail",
823
- url: "https://osshz.idmwx.com/asset/weather/11n.svg",
824
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
825
- };
826
- break;
827
- }
828
- return a;
829
- }
830
- static kts2ms(e) {
831
- return isNaN(e) || e === null ? e : Math.round(e * 1852 / 3600 * 1e4) / 1e4;
832
- }
833
- static kts2kmh(e) {
834
- return isNaN(e) || e === null ? e : e * 1.852;
835
- }
836
- static m2nm(e) {
837
- return isNaN(e) || e === null ? e : Math.round(e / 1e3 / 1.852 * 1e4) / 1e4;
838
- }
839
- static kmh2kts(e) {
840
- return isNaN(e) || e === null ? e : this.ms2kts(e * 1e3 / 3600);
841
- }
842
- static ms2kts(e) {
843
- return isNaN(e) || e === null ? e : Math.round(e * 3600 / 1852 * 1e4) / 1e4;
844
- }
845
- /**
846
- * 角度转为弧度
847
- * @param degree
848
- */
849
- static degree2Radian(e) {
850
- if (isNaN(e) || e === null)
851
- return e;
852
- let a = e % 360 / 360 * 2 * Math.PI;
853
- return a = a < 0 ? a + 2 * Math.PI : a, a;
854
- }
855
- /**
856
- * 将方位角转换为方向
857
- * @param degree 角度[-360,360]
858
- * @return {string}
859
- */
860
- static degree2Direction(e) {
861
- const a = this.degree2Radian(e);
862
- if (isNaN(a) || a === null)
863
- return null;
864
- let h = "N/A";
865
- const t = Math.PI / 16;
866
- return a < t ? h = "N" : a >= t && a < 3 * t ? h = "NNE" : a >= 3 * t && a < 5 * t ? h = "NE" : a >= 5 * t && a < 7 * t ? h = "ENE" : a >= 7 * t && a < 9 * t ? h = "E" : a >= 9 * t && a < 11 * t ? h = "ESE" : a >= 11 * t && a < 13 * t ? h = "SE" : a >= 13 * t && a < 15 * t ? h = "SSE" : a >= 15 * t && a < 17 * t ? h = "S" : a >= 17 * t && a < 19 * t ? h = "SSW" : a >= 19 * t && a < 21 * t ? h = "SW" : a >= 21 * t && a < 23 * t ? h = "WSW" : a >= 23 * t && a < 25 * t ? h = "W" : a >= 25 * t && a < 27 * t ? h = "WNW" : a >= 27 * t && a < 29 * t ? h = "NW" : a >= 29 * t && a < 31 * t ? h = "NNW" : a >= 31 * t && a < 32 * t && (h = "N"), h;
867
- }
868
- /**
869
- * 计算风力蒲福等级
870
- * @param speed m/s
871
- * @returns {number}
872
- */
873
- static beaufort(e) {
874
- let a = 0;
875
- return isNaN(e) || (e = Math.round(e * 10) / 10, e <= 0.2 ? a = 0 : e <= 1.5 ? a = 1 : e <= 3.3 ? a = 2 : e <= 5.4 ? a = 3 : e <= 7.9 ? a = 4 : e <= 10.7 ? a = 5 : e <= 13.8 ? a = 6 : e <= 17.1 ? a = 7 : e <= 20.7 ? a = 8 : e <= 22.4 ? a = 9 : e <= 28.4 ? a = 10 : e <= 32.6 ? a = 11 : e > 32.6 && (a = 12)), a;
876
- }
877
- /**
878
- * 计算海浪等级
879
- * @param height 高度 m
880
- */
881
- static douglas(e) {
882
- let a = "Calm";
883
- return isNaN(e) || e <= 0.1 ? a = "Calm" : e <= 0.5 ? a = "Smooth" : e <= 1.25 ? a = "Slight" : e <= 2.5 ? a = "Moderate" : e <= 4 ? a = "Rough" : e <= 6 ? a = "VeryRough" : e <= 9 ? a = "High" : e <= 14 ? a = "VeryHigh" : a = "Precipitous", a;
884
- }
885
- }
886
- const Oe = "data:image/gif;base64,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";
887
- const Bt = (n, e) => {
888
- const a = n.__vccOpts || n;
889
- for (const [h, t] of e)
890
- a[h] = t;
891
- return a;
892
- }, bt = {
893
- name: "SpotReport",
894
- components: { ArrowRightBold: ft, Calendar: yt, Download: vt },
895
- props: {
896
- token: {
897
- type: String,
898
- default: ""
899
- },
900
- timeZone: {
901
- type: Number,
902
- default: 8
903
- },
904
- point: {
905
- type: Object,
906
- default: () => ({})
907
- }
908
- },
909
- emits: ["url"],
910
- data() {
911
- return {
912
- loading: {
913
- weatherEchart: !1,
914
- meteogramEchart: !1,
915
- hoursTable: !1,
916
- daysTable: !1,
917
- hourlyTable: !1,
918
- seasonalEchart: !1
919
- },
920
- menuIndex: 2,
921
- placeholder: "search for port name or coordinates",
922
- searchName: void 0,
923
- rawSearchIcon: xt(Dt),
924
- forecastModel: "Best Match",
925
- modelList: ["Best Match", "GFS", "ECMWF"],
926
- followList: void 0,
927
- followItem: void 0,
928
- followDialogTitle: "",
929
- showFollowDialog: !1,
930
- followRemark: "",
931
- showDownloadDialog: !1,
932
- etime: void 0,
933
- positionOffset: void 0,
934
- positionGmt: void 0,
935
- issuedDate: void 0,
936
- meteoData: void 0,
937
- positionList: [],
938
- position: void 0,
939
- activeIndex: void 0,
940
- hoursTableData: {},
941
- pickedDate: void 0,
942
- pickedWeek: "Today",
943
- meteogramData: void 0,
944
- daysTableData: [],
945
- hourlyTableData: [],
946
- currentMonth: void 0,
947
- seasonalData: void 0,
948
- monthsOptions: [],
949
- dateRange: [],
950
- dateRangeZ: [],
951
- datePickerOptions: {},
952
- selectDate: void 0,
953
- gateway: "https://cbe.idmwx.com"
954
- };
955
- },
956
- computed: {
957
- computeHourLT() {
958
- return function(n) {
959
- if (n) {
960
- const e = j(n).tz(this.positionGmt);
961
- return `${e == null ? void 0 : e.format("HH")}`;
962
- }
963
- return "-";
964
- };
965
- },
966
- computeHourZ() {
967
- return function(n) {
968
- if (n) {
969
- const e = H(n).utc();
970
- return `${e == null ? void 0 : e.format("HH")}Z`;
971
- }
972
- return "-";
973
- };
974
- },
975
- computeWeekLT() {
976
- return function(n) {
977
- if (n) {
978
- const e = j(n).tz(this.positionGmt);
979
- return `${e == null ? void 0 : e.format("dddd")}`;
980
- }
981
- return "-";
982
- };
983
- },
984
- computeMMMDDLT() {
985
- return function(n) {
986
- if (n) {
987
- const e = j(n).tz(this.positionGmt);
988
- return `${e == null ? void 0 : e.format("MMM-DD")}`;
989
- }
990
- return "-";
991
- };
992
- },
993
- computeMMMDDHHmmLT() {
994
- return function(n) {
995
- if (n) {
996
- const e = j(n).tz(this.positionGmt);
997
- return `${e == null ? void 0 : e.format("MMM-DD HHmm")}`;
998
- }
999
- return "-";
1000
- };
1001
- },
1002
- computeMMMDDyyyyLT() {
1003
- return function(n) {
1004
- if (n) {
1005
- const e = j(n).tz(this.positionGmt);
1006
- return `${e == null ? void 0 : e.format("MMM-DD, yyyy")}`;
1007
- }
1008
- return "-";
1009
- };
1010
- },
1011
- computeLat() {
1012
- return function(n, e = 4) {
1013
- return Je.lat2pretty(n, e).pretty;
1014
- };
1015
- },
1016
- computeLng() {
1017
- return function(n, e = 4) {
1018
- return Je.lng2pretty(n, e).pretty;
1019
- };
1020
- },
1021
- roundPrecision() {
1022
- return function(n, e = 4) {
1023
- return isNaN(n) ? "-" : Je.roundPrecision(n, e);
1024
- };
1025
- }
1026
- },
1027
- watch: {
1028
- point: {
1029
- async handler() {
1030
- var n, e, a, h, t, o;
1031
- this.point && (this.positionOffset = "-", this.position = {
1032
- portId: (n = this.point) == null ? void 0 : n.portId,
1033
- lat: (e = this.point) == null ? void 0 : e.lat,
1034
- lng: (a = this.point) == null ? void 0 : a.lng,
1035
- name: ((h = this.point) == null ? void 0 : h.portName) || this.computeLat(this.point.lat) + ", " + this.computeLng(this.point.lng),
1036
- remark: (t = this.point) == null ? void 0 : t.remark
1037
- }, this.forecastModel = ((o = this.point) == null ? void 0 : o.forecastModel) || "Best Match", this.handleRender());
1038
- },
1039
- deep: !0,
1040
- immediate: !0
1041
- },
1042
- menuIndex: {
1043
- handler() {
1044
- this.loading = {
1045
- weatherEchart: !0,
1046
- meteogramEchart: !0,
1047
- hoursTable: !0,
1048
- daysTable: !0,
1049
- hourlyTable: !0,
1050
- seasonalEchart: !0
1051
- }, this.handleRender();
1052
- }
1053
- }
1054
- },
1055
- mounted() {
1056
- this.fetchMyFollows(), this.$nextTick(() => {
1057
- document.addEventListener("click", (n) => {
1058
- const e = document.getElementById("seasonal-title");
1059
- !(e != null && e.contains(n.target)) && this.seasonalData && (this.seasonalData.showMonths = !1);
1060
- }), document.addEventListener("click", (n) => {
1061
- var t, o;
1062
- const e = document.getElementById("history-date-title"), a = (t = document.getElementsByClassName("datetime-select-box")) == null ? void 0 : t[0], h = (o = document.getElementsByClassName("el-picker__popper")) == null ? void 0 : o[0];
1063
- !(e != null && e.contains(n.target)) && !(a != null && a.contains(n.target)) && !(h != null && h.contains(n.target)) && this.meteoData && (this.meteoData.showDateSelect = !1);
1064
- });
1065
- }), localStorage.removeItem("idmCollectList");
1066
- },
1067
- methods: {
1068
- handleSearchFocus() {
1069
- this.placeholder = "", this.positionList = JSON.parse(JSON.stringify(this.followList));
1070
- },
1071
- async fetchSuggestPosition(n) {
1072
- var h;
1073
- const e = n.replaceAll(",", ",");
1074
- if (!e)
1075
- return !1;
1076
- const a = await Fe.get(`${this.gateway}/api/arc/ports/suggest?n=${e}`, {
1077
- headers: {
1078
- Authorization: this.token
1079
- }
1080
- });
1081
- (a == null ? void 0 : a.data.code) === 0 && (this.positionList = (h = a == null ? void 0 : a.data.data) == null ? void 0 : h.map((t) => (t.name = t.id ? t.name : this.computeLat(t.lat) + ", " + this.computeLng(t.lng), t.portId = t.id, t)));
1082
- },
1083
- async handleSearch(n) {
1084
- var e, a, h, t;
1085
- if (this.searchName) {
1086
- this.handleClearHoursTable(), this.followList ? this.followItem = this.followList.find((p) => p.name === this.searchName) : await this.fetchMyFollows();
1087
- const o = this.positionList.find((p) => p.name === this.searchName);
1088
- this.position = {
1089
- portId: ((e = this.followItem) == null ? void 0 : e.portId) || (o == null ? void 0 : o.portId),
1090
- lat: o == null ? void 0 : o.lat,
1091
- lng: o == null ? void 0 : o.lng,
1092
- name: this.searchName,
1093
- remark: ((a = this.followItem) == null ? void 0 : a.remark) || (o == null ? void 0 : o.remark),
1094
- followId: ((h = this.followItem) == null ? void 0 : h.followId) || o.followId
1095
- }, this.positionOffset = "-", this.followRemark = ((t = this.followItem) == null ? void 0 : t.remark) || "", this.$emit("url", this.position), (this.menuIndex === 1 || this.menuIndex === 3) && await this.fetchForecastMeteo(), this.handleRender();
1096
- }
1097
- },
1098
- handleModelChange() {
1099
- this.position.forecastModel = this.forecastModel, this.$emit("url", this.position), this.handleRender();
1100
- },
1101
- handleFollowDialogOpen() {
1102
- var e;
1103
- this.showFollowDialog = !0;
1104
- const n = (e = this.position) != null && e.portId ? "Port" : "Coordinate";
1105
- this.followDialogTitle = this.followItem ? `Remove the ${n} from My Follows ?` : `Add the ${n} to My Follows ?`;
1106
- },
1107
- async fetchMyFollows() {
1108
- var e, a, h;
1109
- this.followList = [];
1110
- const n = await Fe.get(`${this.gateway}/api/rsv/follows`, {
1111
- headers: {
1112
- Authorization: this.token
1113
- },
1114
- params: { b: 2, pn: 1, ps: 1e4 }
1115
- });
1116
- ((e = n == null ? void 0 : n.data) == null ? void 0 : e.code) === 0 && ((h = (a = n.data) == null ? void 0 : a.data) == null || h.rows.forEach((t) => {
1117
- var p, f, I, b, x, C, Q, N;
1118
- const o = {};
1119
- o.followId = t.id, o.remark = t.remark, o.name = ((p = t.port) == null ? void 0 : p.name) || this.computeLat((f = t == null ? void 0 : t.coordinate) == null ? void 0 : f.lat) + ", " + this.computeLng((I = t == null ? void 0 : t.coordinate) == null ? void 0 : I.lng), o.nameRemark = o.remark ? `${o.name} ( ${o.remark} )` : o.name, o.portId = (b = t.port) == null ? void 0 : b.id, o.lat = ((x = t.port) == null ? void 0 : x.lat) || ((C = t == null ? void 0 : t.coordinate) == null ? void 0 : C.lat), o.lng = ((Q = t.port) == null ? void 0 : Q.lng) || ((N = t == null ? void 0 : t.coordinate) == null ? void 0 : N.lng), this.followList.push(o);
1120
- }), this.followItem = this.followList.find((t) => {
1121
- var o, p;
1122
- return t.followId && ((o = this.position) == null ? void 0 : o.followId) && t.followId === ((p = this.position) == null ? void 0 : p.followId);
1123
- }));
1124
- },
1125
- handleClickFollow() {
1126
- if (this.followItem)
1127
- Fe.delete(`${this.gateway}/api/rsv/follows/${this.position.followId}`, {
1128
- headers: {
1129
- Authorization: this.token
1130
- }
1131
- }).then((n) => {
1132
- var e;
1133
- ((e = n.data) == null ? void 0 : e.code) === 0 && (this.showFollowDialog = !1, this.searchName = "", this.followItem = void 0, this.followRemark = "", this.position.followId = void 0, this.position.remark = "", this.fetchMyFollows());
1134
- });
1135
- else {
1136
- const n = {
1137
- portId: this.position.portId,
1138
- lng: this.position.portId ? void 0 : this.position.lng,
1139
- lat: this.position.portId ? void 0 : this.position.lat,
1140
- remark: this.followRemark
1141
- };
1142
- Fe.post(`${this.gateway}/api/rsv/follows`, n, {
1143
- headers: {
1144
- Authorization: this.token
1145
- }
1146
- }).then((e) => {
1147
- var a, h, t;
1148
- ((a = e.data) == null ? void 0 : a.code) === 0 && (this.showFollowDialog = !1, this.position.remark = this.followRemark, this.position.followId = (t = (h = e.data) == null ? void 0 : h.data) == null ? void 0 : t.id, this.fetchMyFollows());
1149
- });
1150
- }
1151
- },
1152
- handleDownload() {
1153
- },
1154
- async fetchForecastMeteo(n) {
1155
- var o, p, f, I, b, x, C;
1156
- if (this.meteoData = void 0, !this.token)
1157
- return !1;
1158
- this.loading = {
1159
- weatherEchart: !0,
1160
- meteogramEchart: !0,
1161
- hoursTable: !0,
1162
- daysTable: !0,
1163
- hourlyTable: !0,
1164
- seasonalEchart: !0
1165
- };
1166
- const { weatherModels: e, marineModels: a } = Te.autoPickMeteoModel(this.forecastModel), h = {
1167
- lat: this.position.lat,
1168
- lng: this.position.lng,
1169
- forecastDays: n || 7,
1170
- weatherModels: e,
1171
- marineModels: a
1172
- }, t = await Fe.post(`${this.gateway}/api/arc/meteo2/spot/forecast`, h, {
1173
- headers: {
1174
- Authorization: this.token
1175
- }
1176
- });
1177
- (t == null ? void 0 : t.data.code) === 0 && (this.meteoData = {
1178
- ...t == null ? void 0 : t.data.data
1179
- }, this.etime = (o = t == null ? void 0 : t.data) == null ? void 0 : o.etime, this.positionGmt = (I = (f = (p = this.meteoData) == null ? void 0 : p.weather) == null ? void 0 : f[0]) == null ? void 0 : I.timezone, this.positionOffset = (C = (x = (b = this.meteoData) == null ? void 0 : b.weather) == null ? void 0 : x[0]) == null ? void 0 : C.offset, this.issuedDate = H(this.etime).utc().format("MMM-DD/HHmm[Z], YYYY"));
1180
- },
1181
- async fetchHistoryMeteo(n) {
1182
- var p, f, I, b, x, C, Q;
1183
- if (this.meteoData = void 0, !this.token)
1184
- return !1;
1185
- this.loading.meteogramEchart = !0, this.loading.hourlyTable = !0;
1186
- const { weatherModels: e, marineModels: a } = Te.autoPickMeteoModel(this.forecastModel), h = j(this.dateRangeZ[0] || this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0 }).format(), t = {
1187
- lat: this.position.lat,
1188
- lng: this.position.lng,
1189
- datetime: h,
1190
- forecastDays: n,
1191
- weatherModels: e,
1192
- marineModels: a
1193
- }, o = await Fe.post(`${this.gateway}/api/arc/meteo2/spot/forecast`, t, {
1194
- headers: {
1195
- Authorization: this.token
1196
- }
1197
- });
1198
- (o == null ? void 0 : o.data.code) === 0 && (this.meteoData = o == null ? void 0 : o.data.data, this.meteoData.showDateSelect = !1, this.etime = (p = o == null ? void 0 : o.data) == null ? void 0 : p.etime, this.positionGmt = (b = (I = (f = this.meteoData) == null ? void 0 : f.weather) == null ? void 0 : I[0]) == null ? void 0 : b.timezone, this.positionOffset = (Q = (C = (x = this.meteoData) == null ? void 0 : x.weather) == null ? void 0 : C[0]) == null ? void 0 : Q.offset, this.issuedDate = H(this.etime).utc().format("MMM-DD/HHmm[Z], YYYY"));
1199
- },
1200
- async handleRender() {
1201
- if (this.disposeEcharts(), this.menuIndex === 1) {
1202
- this.initDatePickerInfo();
1203
- const n = H(this.dateRangeZ[1]).diff(H(this.dateRangeZ[0]), "d", !0) + 1;
1204
- await this.fetchHistoryMeteo(n), this.handleMeteogramData14(this.meteoData, n, this.dateRangeZ[0]), this.initHourlyTableData(this.meteoData, n, this.dateRangeZ[0], !0);
1205
- } else
1206
- this.menuIndex === 2 ? (await this.fetchForecastMeteo(7), this.initInfo(), this.initWeatherEchart(), this.handleMeteogramData7(this.meteoData), this.initHoursTableData()) : this.menuIndex === 3 ? (await this.fetchForecastMeteo(14), this.handleMeteogramData14(this.meteoData), this.initDaysTableData(), this.initHourlyTableData(this.meteoData)) : this.menuIndex === 4 && (await this.fetchSeasonalData(), this.initSeasonalEchart());
1207
- },
1208
- initInfo() {
1209
- this.activeIndex = j(this.etime).tz(this.positionGmt).hour(), this.pickedDate = j(this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
1210
- },
1211
- initDatePickerInfo() {
1212
- if (!this.dateRangeZ[0] || !this.dateRange[1]) {
1213
- this.dateRangeZ = [H(this.etime).add(-7, "day").utc().format(), H(this.etime).add(-1, "day").utc().format()];
1214
- const n = [
1215
- j(this.dateRangeZ[0]).tz(this.positionGmt).format("yyyy-MM-DD"),
1216
- j(this.dateRangeZ[1]).tz(this.positionGmt).format("yyyy-MM-DD")
1217
- ];
1218
- this.dateRange = [H(n[0]).format(), H(n[1]).format()];
1219
- } else {
1220
- const n = [
1221
- j(this.dateRangeZ[0]).tz(this.positionGmt).format("yyyy-MM-DD"),
1222
- j(this.dateRangeZ[1]).tz(this.positionGmt).format("yyyy-MM-DD")
1223
- ];
1224
- this.dateRange = [H(n[0]).format(), H(n[1]).format()];
1225
- }
1226
- this.datePickerOptions = {
1227
- shortcuts: [
1228
- {
1229
- text: "Last week",
1230
- value: (n) => {
1231
- const e = H(this.etime).add(-1, "day").unix() * 1e3;
1232
- return [H(this.etime).add(-7, "day").unix() * 1e3, e];
1233
- }
1234
- },
1235
- {
1236
- text: "Last 2 weeks",
1237
- value: (n) => {
1238
- const e = H(this.etime).add(-1, "day").unix() * 1e3;
1239
- return [H(this.etime).add(-14, "day").unix() * 1e3, e];
1240
- }
1241
- }
1242
- ],
1243
- disabledDate: (n) => {
1244
- const e = n.getTime() > H(this.etime).add(-1, "day").unix() * 1e3, a = this.selectDate && Math.abs(H(n).diff(H(this.selectDate), "d", !0)) >= 14;
1245
- return e || a;
1246
- }
1247
- };
1248
- },
1249
- initWeatherEchart() {
1250
- const n = [], e = [], a = [], h = [], t = [], o = [], p = [], f = [], I = [], b = [], x = {}, C = "data:image/svg+xml;base64," + window.btoa(
1251
- unescape(
1252
- encodeURIComponent(
1253
- '<svg t="1740385441519" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10951" width="200" height="200"><path d="M512 804.83593751A276.87183211 276.87183211 0 0 1 235.12816789 527.9641054Q235.12816789 375.21005376 512 13.82031251q276.87183211 361.30792288 276.87183211 514.14379289a276.87183211 276.87183211 0 0 1-276.87183211 276.87183211zM294.4461577 527.9641054a217.47202472 217.47202472 0 0 0 217.5538423 217.55384231 19.79993605 19.79993605 0 1 0 0-39.51805453 177.9539702 177.9539702 0 0 1-177.9539702-178.03578778 19.79993605 19.79993605 0 0 0-39.5998721 0z" fill="#0c73a8" p-id="10952"></path></svg>'
1254
- )
1255
- )
1256
- ), Q = "data:image/svg+xml;base64," + window.btoa(
1257
- unescape(
1258
- encodeURIComponent(
1259
- '<svg t="1740383449285" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10797" width="200" height="200"><path d="M133.8 579l-44.4-44.4c-18.8-18.8-18.8-49.2 0-67.8L478 78c18.8-18.8 49.2-18.8 67.8 0l388.6 388.6c18.8 18.8 18.8 49.2 0 67.8L890 578.8c-19 19-50 18.6-68.6-0.8L592 337.2V912c0 26.6-21.4 48-48 48h-64c-26.6 0-48-21.4-48-48V337.2L202.4 578.2c-18.6 19.6-49.6 20-68.6 0.8z" fill="#333" p-id="10798"></path></svg>'
1260
- )
1261
- )
1262
- ), N = new Image(64, 64);
1263
- N.src = Q, N.onload = () => {
1264
- var K, U, R, W, X, q, J, Z, V, w, S, T, P;
1265
- this.loading.weatherEchart = !1;
1266
- for (let u = 0; u < 7; u++) {
1267
- const G = H(this.pickedDate).clone().add(u, "d").format();
1268
- n.push(j(G).tz(this.positionGmt).format("yyyy-MM-DD")), e.push(this.computeMMMDDLT(G)), a.push(u === 0 ? "Today" : this.computeWeekLT(G));
1269
- const M = ((K = Te.pickDaily(this.meteoData, G)) == null ? void 0 : K[0]) || {};
1270
- h.push(this.roundPrecision((R = (U = M.weather) == null ? void 0 : U.temp) == null ? void 0 : R.min, 0)), t.push(this.roundPrecision((X = (W = M.weather) == null ? void 0 : W.temp) == null ? void 0 : X.max, 0)), f.push(this.roundPrecision((J = (q = M.weather) == null ? void 0 : q.wind) == null ? void 0 : J.kts, 1) ?? "- kts"), b.push(this.roundPrecision((V = (Z = M.weather) == null ? void 0 : Z.precip) == null ? void 0 : V.sum, 1) ?? "- mm"), o.push({ symbol: "image://" + ((w = M.weather) == null ? void 0 : w.url) }), p.push((S = M.weather) == null ? void 0 : S.name), I.push((P = (T = M.weather) == null ? void 0 : T.wind) == null ? void 0 : P.bearing);
1271
- const k = document.createElement("canvas"), D = k.getContext("2d");
1272
- k.width = N.width, k.height = N.height;
1273
- const le = I[u] * (Math.PI / 180);
1274
- D.translate(k.width / 2, k.height / 2), D.rotate(le), D.translate(-N.width / 2, -N.height / 2), D.drawImage(N, 0, 0, 64, 64);
1275
- const ie = k.toDataURL();
1276
- x[`WindIcon${u}`] = {
1277
- height: 12,
1278
- width: 12,
1279
- align: "left",
1280
- backgroundColor: {
1281
- image: ie
1282
- }
1283
- };
1284
- }
1285
- const ee = Math.max(...t.filter((u) => typeof u == "number" && !isNaN(u))) - Math.min(...h.filter((u) => typeof u == "number" && !isNaN(u))), te = Math.min(...h.filter((u) => typeof u == "number" && !isNaN(u))) - 1.5 * ee, ae = Math.max(...t.filter((u) => typeof u == "number" && !isNaN(u))) + 2 * ee, _ = 4 + 0.5 / n.length * 92 + "%", Y = {
1286
- grid: {
1287
- bottom: 0,
1288
- top: 0,
1289
- left: "4%",
1290
- right: "4%"
1291
- },
1292
- tooltip: {
1293
- trigger: "item",
1294
- show: !0,
1295
- position: "right",
1296
- formatter: function(u) {
1297
- return u.seriesName === "Weather Icon" ? p[u.dataIndex] : !1;
1298
- }
1299
- },
1300
- legend: {
1301
- show: !1
1302
- },
1303
- xAxis: {
1304
- left: 0,
1305
- right: 0,
1306
- top: "50%",
1307
- height: "50%",
1308
- type: "category",
1309
- data: n,
1310
- show: !1
1311
- },
1312
- singleAxis: [
1313
- {
1314
- left: _,
1315
- right: _,
1316
- type: "category",
1317
- show: !1,
1318
- axisLine: {
1319
- show: !1
1320
- // 隐藏轴线
1321
- },
1322
- axisTick: {
1323
- show: !1
1324
- // 隐藏刻度
1325
- },
1326
- axisLabel: {
1327
- show: !1
1328
- // 隐藏刻度标签
1329
- },
1330
- splitLine: {
1331
- show: !1
1332
- // 隐藏分割线
1333
- },
1334
- boundaryGap: !1,
1335
- data: n,
1336
- top: "7%",
1337
- height: "2%"
1338
- },
1339
- {
1340
- left: _,
1341
- right: _,
1342
- type: "category",
1343
- show: !1,
1344
- axisLine: {
1345
- show: !1
1346
- // 隐藏轴线
1347
- },
1348
- axisTick: {
1349
- show: !1
1350
- // 隐藏刻度
1351
- },
1352
- axisLabel: {
1353
- show: !1
1354
- // 隐藏刻度标签
1355
- },
1356
- splitLine: {
1357
- show: !1
1358
- // 隐藏分割线
1359
- },
1360
- boundaryGap: !1,
1361
- data: n,
1362
- top: "16%",
1363
- height: "2%"
1364
- },
1365
- {
1366
- left: _,
1367
- right: _,
1368
- type: "category",
1369
- show: !1,
1370
- axisLine: {
1371
- show: !1
1372
- // 隐藏轴线
1373
- },
1374
- axisTick: {
1375
- show: !1
1376
- // 隐藏刻度
1377
- },
1378
- axisLabel: {
1379
- show: !1
1380
- // 隐藏刻度标签
1381
- },
1382
- splitLine: {
1383
- show: !1
1384
- // 隐藏分割线
1385
- },
1386
- boundaryGap: !1,
1387
- data: n,
1388
- top: "27%",
1389
- height: "2%"
1390
- },
1391
- {
1392
- left: _,
1393
- right: _,
1394
- type: "category",
1395
- show: !1,
1396
- axisLine: {
1397
- show: !1
1398
- // 隐藏轴线
1399
- },
1400
- axisTick: {
1401
- show: !1
1402
- // 隐藏刻度
1403
- },
1404
- axisLabel: {
1405
- show: !1
1406
- // 隐藏刻度标签
1407
- },
1408
- splitLine: {
1409
- show: !1
1410
- // 隐藏分割线
1411
- },
1412
- boundaryGap: !1,
1413
- data: n,
1414
- top: "84%",
1415
- height: "2%"
1416
- },
1417
- {
1418
- left: _,
1419
- right: _,
1420
- type: "category",
1421
- show: !1,
1422
- axisLine: {
1423
- show: !1
1424
- // 隐藏轴线
1425
- },
1426
- axisTick: {
1427
- show: !1
1428
- // 隐藏刻度
1429
- },
1430
- axisLabel: {
1431
- show: !1
1432
- // 隐藏刻度标签
1433
- },
1434
- splitLine: {
1435
- show: !1
1436
- // 隐藏分割线
1437
- },
1438
- boundaryGap: !1,
1439
- data: n,
1440
- top: "93%",
1441
- height: "2%"
1442
- }
1443
- ],
1444
- yAxis: {
1445
- type: "value",
1446
- name: "温度(℃)",
1447
- show: !1,
1448
- min: te,
1449
- max: ae,
1450
- axisLabel: {
1451
- formatter: "{value} °C"
1452
- }
1453
- },
1454
- series: [
1455
- {
1456
- singleAxisIndex: 0,
1457
- coordinateSystem: "singleAxis",
1458
- type: "scatter",
1459
- data: a,
1460
- label: {
1461
- show: !0,
1462
- color: "rgba(0,0,0,0.7)",
1463
- fontSize: 14,
1464
- formatter: "{c}"
1465
- },
1466
- symbolSize: 0
1467
- },
1468
- {
1469
- singleAxisIndex: 1,
1470
- coordinateSystem: "singleAxis",
1471
- type: "scatter",
1472
- data: e,
1473
- label: {
1474
- show: !0,
1475
- color: "rgba(0,0,0,0.7)",
1476
- formatter: "{c}"
1477
- },
1478
- symbolSize: 0
1479
- },
1480
- {
1481
- name: "Weather Icon",
1482
- singleAxisIndex: 2,
1483
- coordinateSystem: "singleAxis",
1484
- type: "scatter",
1485
- data: o,
1486
- symbolSize: 44
1487
- },
1488
- {
1489
- name: "温度(℃)",
1490
- type: "line",
1491
- data: h,
1492
- smooth: !0,
1493
- itemStyle: {
1494
- color: "#FF9500"
1495
- },
1496
- label: {
1497
- show: !0,
1498
- color: "rgba(0,0,0,0.7)",
1499
- position: [-10, 12],
1500
- formatter: "{c} °C",
1501
- fontSize: 12
1502
- },
1503
- markArea: {
1504
- itemStyle: {
1505
- color: "rgba(64,159,255,0.25)"
1506
- },
1507
- data: [
1508
- [
1509
- {
1510
- x: "4%"
1511
- },
1512
- {
1513
- x: 4 + 1 / n.length * 92 + "%"
1514
- }
1515
- ]
1516
- ]
1517
- }
1518
- },
1519
- {
1520
- name: "温度(℃)",
1521
- type: "line",
1522
- data: t,
1523
- smooth: !0,
1524
- itemStyle: {
1525
- color: "#d88102"
1526
- },
1527
- label: {
1528
- show: !0,
1529
- color: "rgba(0,0,0,0.7)",
1530
- position: [-10, -12],
1531
- formatter: "{c} °C",
1532
- fontSize: 12
1533
- }
1534
- },
1535
- {
1536
- singleAxisIndex: 3,
1537
- coordinateSystem: "singleAxis",
1538
- type: "scatter",
1539
- data: f,
1540
- label: {
1541
- show: !0,
1542
- color: "rgba(0,0,0,0.7)",
1543
- // formatter: '{c}'
1544
- rich: {
1545
- ...x,
1546
- title: {
1547
- align: "center",
1548
- vertical: "center"
1549
- }
1550
- },
1551
- formatter: function(u) {
1552
- return `{WindIcon${u.dataIndex}|}{title|${u.value}} kts`;
1553
- }
1554
- },
1555
- symbolSize: 0
1556
- },
1557
- {
1558
- singleAxisIndex: 4,
1559
- coordinateSystem: "singleAxis",
1560
- type: "scatter",
1561
- data: b,
1562
- label: {
1563
- show: !0,
1564
- color: "rgba(0,0,0,0.7)",
1565
- // formatter: '{c}',
1566
- rich: {
1567
- dIcon: {
1568
- height: 16,
1569
- width: 16,
1570
- align: "left",
1571
- backgroundColor: {
1572
- image: C
1573
- }
1574
- },
1575
- title: {
1576
- align: "center",
1577
- vertical: "center"
1578
- }
1579
- },
1580
- formatter: function(u) {
1581
- return `{dIcon|}{title|${u.value}} mm`;
1582
- }
1583
- },
1584
- symbolSize: 0
1585
- }
1586
- ]
1587
- };
1588
- this.$nextTick(() => {
1589
- const u = Qe.init(document.getElementById("weather-chart"));
1590
- u.setOption(Y), u.on("click", (G) => {
1591
- const M = G.dataIndex, k = n[M].split("-");
1592
- this.pickedDate = j().tz(this.positionGmt).set({ year: k[0], month: Number(k[1] - 1), date: Number(k[2]), hour: 0, minute: 0, second: 0, millisecond: 0 }).format(), this.pickedWeek = M === 0 ? "Today" : this.computeWeekLT(this.pickedDate), this.activeIndex = M === 0 ? j(this.etime).tz(this.positionGmt).hour() : void 0, this.initHoursTableData(), Y.series[3].markArea = {
1593
- itemStyle: {
1594
- color: "rgba(64,159,255,0.25)"
1595
- },
1596
- data: [
1597
- [
1598
- {
1599
- x: 4 + M / n.length * 92 + "%"
1600
- },
1601
- {
1602
- x: 4 + (M + 1) / n.length * 92 + "%"
1603
- }
1604
- ]
1605
- ]
1606
- }, u.setOption(Y);
1607
- });
1608
- });
1609
- };
1610
- },
1611
- handleMeteogramData7(n) {
1612
- this.meteogramData = {
1613
- xDates: [],
1614
- dates: [],
1615
- hours: [],
1616
- temperaturesY: [],
1617
- temperaturesX: [],
1618
- weatherIcons: [],
1619
- weatherNames: [],
1620
- visibility: [],
1621
- windspeed: [],
1622
- windGusts: [],
1623
- windDir: [],
1624
- windDirIcons: {},
1625
- precip: [],
1626
- sigWaveHeight: [],
1627
- swellHeight: [],
1628
- markarea: [],
1629
- gridOffset: { l: 4, r: 8 },
1630
- singleAxisOffset: {}
1631
- };
1632
- let a = { start: void 0, end: void 0 };
1633
- const h = "data:image/svg+xml;base64," + window.btoa(
1634
- unescape(
1635
- encodeURIComponent(
1636
- '<svg t="1740383449285" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10797" width="200" height="200"><path d="M133.8 579l-44.4-44.4c-18.8-18.8-18.8-49.2 0-67.8L478 78c18.8-18.8 49.2-18.8 67.8 0l388.6 388.6c18.8 18.8 18.8 49.2 0 67.8L890 578.8c-19 19-50 18.6-68.6-0.8L592 337.2V912c0 26.6-21.4 48-48 48h-64c-26.6 0-48-21.4-48-48V337.2L202.4 578.2c-18.6 19.6-49.6 20-68.6 0.8z" fill="#60c43e" p-id="10798"></path></svg>'
1637
- )
1638
- )
1639
- ), t = new Image(64, 64);
1640
- t.src = h, t.onload = () => {
1641
- var p, f, I, b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re, le, ie, c, ve, E, z, F, pe, A, Ae, ne, ge, he, Ce, Be, de, ce, B, be, O, $, we, v, i, g;
1642
- this.loading.meteogramEchart = !1;
1643
- const o = j(this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
1644
- for (let me = 0; me < 7 * 24; me++) {
1645
- const Ee = H(o).clone().add(me, "h").format();
1646
- (p = this.meteogramData) == null || p.dates.push(Ee);
1647
- const y = ((f = Te.pickHourly(n, Ee)) == null ? void 0 : f[0]) || {};
1648
- if (me % 12 === 0 && me % 24 !== 0 ? (I = this.meteogramData) == null || I.xDates.push(j(Ee).tz(this.positionGmt).format("MMM-DD")) : (b = this.meteogramData) == null || b.xDates.push(""), me % 3 === 0 ? (x = this.meteogramData) == null || x.hours.push(this.computeHourLT(Ee)) : (C = this.meteogramData) == null || C.hours.push(""), (N = this.meteogramData) == null || N.temperaturesX.push([Ee, this.roundPrecision((Q = y == null ? void 0 : y.weather) == null ? void 0 : Q.temp, 0)]), (te = this.meteogramData) == null || te.temperaturesY.push(this.roundPrecision((ee = y == null ? void 0 : y.weather) == null ? void 0 : ee.temp, 0)), (Y = this.meteogramData) == null || Y.precip.push(this.roundPrecision((_ = (ae = y == null ? void 0 : y.weather) == null ? void 0 : ae.precip) == null ? void 0 : _.sum, 1)), (U = this.meteogramData) == null || U.visibility.push(this.roundPrecision((K = y == null ? void 0 : y.weather) == null ? void 0 : K.visibility, 1)), (X = this.meteogramData) == null || X.windspeed.push(this.roundPrecision((W = (R = y.weather) == null ? void 0 : R.wind) == null ? void 0 : W.kts, 1)), (Z = this.meteogramData) == null || Z.windGusts.push(this.roundPrecision((J = (q = y == null ? void 0 : y.weather) == null ? void 0 : q.wind) == null ? void 0 : J.gusts, 1)), (S = this.meteogramData) == null || S.sigWaveHeight.push(this.roundPrecision((w = (V = y == null ? void 0 : y.wave) == null ? void 0 : V.sig) == null ? void 0 : w.height)), (u = this.meteogramData) == null || u.swellHeight.push(this.roundPrecision((P = (T = y == null ? void 0 : y.wave) == null ? void 0 : T.swell) == null ? void 0 : P.height)), me % 6 === 0 ? ((M = this.meteogramData) == null || M.weatherIcons.push({ symbol: "image://" + ((G = y.weather) == null ? void 0 : G.url), symbolSize: 30 }), (D = this.meteogramData) == null || D.weatherNames.push((k = y.weather) == null ? void 0 : k.name)) : ((le = this.meteogramData) == null || le.weatherIcons.push({ symbol: "image://" + ((re = y.weather) == null ? void 0 : re.url), symbolSize: 0 }), (ie = this.meteogramData) == null || ie.weatherNames.push("")), me % 3 === 0 ? (E = this.meteogramData) == null || E.windDir.push((ve = (c = y.weather) == null ? void 0 : c.wind) == null ? void 0 : ve.bearing) : (z = this.meteogramData) == null || z.windDir.push(void 0), me % 3 === 0) {
1649
- const oe = document.createElement("canvas"), De = oe.getContext("2d");
1650
- oe.width = t.width, oe.height = t.height;
1651
- const L = ((F = this.meteogramData) == null ? void 0 : F.windDir[me]) * (Math.PI / 180);
1652
- De.translate(oe.width / 2, oe.height / 2), De.rotate(L), De.translate(-t.width / 2, -t.height / 2), De.drawImage(t, 0, 0, 64, 64);
1653
- const xe = oe.toDataURL();
1654
- this.meteogramData.windDirIcons[me] = xe;
1655
- } else
1656
- this.meteogramData.windDirIcons[me] = void 0;
1657
- (pe = y == null ? void 0 : y.weather) != null && pe.isDay ? a.end === void 0 && a.start >= 0 && (a.end = me) : a.start === void 0 && (a.start = me), (a.start >= 0 && a.end >= 0 || a.start >= 0 && me === 7 * 24 - 1) && ((Be = this.meteogramData) == null || Be.markarea.push([
1658
- {
1659
- x: ((A = this.meteogramData) == null ? void 0 : A.gridOffset.l) + a.start / (7 * 24) * (100 - ((Ae = this.meteogramData) == null ? void 0 : Ae.gridOffset.l) - ((ne = this.meteogramData) == null ? void 0 : ne.gridOffset.r)) + "%"
1660
- },
1661
- {
1662
- x: ((ge = this.meteogramData) == null ? void 0 : ge.gridOffset.l) + (a.end + 1) / (7 * 24) * (100 - ((he = this.meteogramData) == null ? void 0 : he.gridOffset.l) - ((Ce = this.meteogramData) == null ? void 0 : Ce.gridOffset.r)) + "%"
1663
- }
1664
- ]), a = { start: void 0, end: void 0 });
1665
- }
1666
- this.meteogramData.singleAxisOffset.l = ((de = this.meteogramData) == null ? void 0 : de.gridOffset.l) + 0.5 / ((B = (ce = this.meteogramData) == null ? void 0 : ce.dates) == null ? void 0 : B.length) * (100 - ((be = this.meteogramData) == null ? void 0 : be.gridOffset.l) - ((O = this.meteogramData) == null ? void 0 : O.gridOffset.r)) + "%", this.meteogramData.singleAxisOffset.r = (($ = this.meteogramData) == null ? void 0 : $.gridOffset.r) + 0.5 / ((v = (we = this.meteogramData) == null ? void 0 : we.dates) == null ? void 0 : v.length) * (100 - ((i = this.meteogramData) == null ? void 0 : i.gridOffset.l) - ((g = this.meteogramData) == null ? void 0 : g.gridOffset.r)) + "%", this.$nextTick(() => {
1667
- this.initMeteogramEchart(7);
1668
- });
1669
- };
1670
- },
1671
- handleMeteogramData14(n, e, a) {
1672
- const h = e || 14, t = a || this.etime;
1673
- this.meteogramData = {
1674
- xDates: [],
1675
- dates: [],
1676
- hours: [],
1677
- temperaturesX: [],
1678
- temperaturesY: [],
1679
- weatherIcons: [],
1680
- weatherNames: [],
1681
- visibility: [],
1682
- windspeed: [],
1683
- windGusts: [],
1684
- windDir: [],
1685
- windDirIcons: {},
1686
- precip: [],
1687
- sigWaveHeight: [],
1688
- swellHeight: [],
1689
- markarea: [],
1690
- gridOffset: { l: 4, r: 8 },
1691
- singleAxisOffset: {}
1692
- };
1693
- let o = { start: void 0, end: void 0 };
1694
- const p = "data:image/svg+xml;base64," + window.btoa(
1695
- unescape(
1696
- encodeURIComponent(
1697
- '<svg t="1740383449285" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10797" width="200" height="200"><path d="M133.8 579l-44.4-44.4c-18.8-18.8-18.8-49.2 0-67.8L478 78c18.8-18.8 49.2-18.8 67.8 0l388.6 388.6c18.8 18.8 18.8 49.2 0 67.8L890 578.8c-19 19-50 18.6-68.6-0.8L592 337.2V912c0 26.6-21.4 48-48 48h-64c-26.6 0-48-21.4-48-48V337.2L202.4 578.2c-18.6 19.6-49.6 20-68.6 0.8z" fill="#60c43e" p-id="10798"></path></svg>'
1698
- )
1699
- )
1700
- ), f = new Image(64, 64);
1701
- f.src = p, f.onload = () => {
1702
- var b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re, le, ie, c, ve, E, z, F, pe, A, Ae, ne, ge, he, Ce, Be, de, ce, B, be, O, $, we, v, i, g, me, Ee, y, oe;
1703
- this.loading.meteogramEchart = !1;
1704
- const I = j(t).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
1705
- for (let De = 0; De < h * 24; De++) {
1706
- const d = H(I).clone().add(De, "h").format();
1707
- (b = this.meteogramData) == null || b.dates.push(d);
1708
- const L = ((x = Te.pickHourly(n, d)) == null ? void 0 : x[0]) || {};
1709
- if ((Q = this.meteogramData) == null || Q.temperaturesY.push(this.roundPrecision((C = L == null ? void 0 : L.weather) == null ? void 0 : C.temp, 0)), (ee = this.meteogramData) == null || ee.visibility.push(this.roundPrecision((N = L == null ? void 0 : L.weather) == null ? void 0 : N.visibility, 1)), (_ = this.meteogramData) == null || _.windspeed.push(this.roundPrecision((ae = (te = L.weather) == null ? void 0 : te.wind) == null ? void 0 : ae.kts, 1)), (U = this.meteogramData) == null || U.windGusts.push(this.roundPrecision((K = (Y = L == null ? void 0 : L.weather) == null ? void 0 : Y.wind) == null ? void 0 : K.gusts, 1)), (X = this.meteogramData) == null || X.sigWaveHeight.push(this.roundPrecision((W = (R = L == null ? void 0 : L.wave) == null ? void 0 : R.sig) == null ? void 0 : W.height)), (Z = this.meteogramData) == null || Z.swellHeight.push(this.roundPrecision((J = (q = L == null ? void 0 : L.wave) == null ? void 0 : q.swell) == null ? void 0 : J.height)), De % 3 === 0 ? ((S = this.meteogramData) == null || S.precip.push(this.roundPrecision((w = (V = L == null ? void 0 : L.weather) == null ? void 0 : V.precip) == null ? void 0 : w.sum3Hours, 1)), (P = this.meteogramData) == null || P.temperaturesX.push([d, this.roundPrecision((T = L == null ? void 0 : L.weather) == null ? void 0 : T.temp, 0)])) : (u = this.meteogramData) == null || u.precip.push(null), De % 12 === 0 && De % 24 !== 0 ? (G = this.meteogramData) == null || G.xDates.push(j(d).tz(this.positionGmt).format("MMM-DD")) : (M = this.meteogramData) == null || M.xDates.push(""), De % 6 === 0 ? (k = this.meteogramData) == null || k.hours.push(this.computeHourLT(d)) : (D = this.meteogramData) == null || D.hours.push(""), De % 12 === 0 ? ((le = this.meteogramData) == null || le.weatherIcons.push({ symbol: "image://" + ((re = L.weather) == null ? void 0 : re.url), symbolSize: 30 }), (c = this.meteogramData) == null || c.weatherNames.push((ie = L.weather) == null ? void 0 : ie.name)) : ((E = this.meteogramData) == null || E.weatherIcons.push({ symbol: "image://" + ((ve = L.weather) == null ? void 0 : ve.url), symbolSize: 0 }), (z = this.meteogramData) == null || z.weatherNames.push("")), De % 6 === 0 ? (A = this.meteogramData) == null || A.windDir.push((pe = (F = L.weather) == null ? void 0 : F.wind) == null ? void 0 : pe.bearing) : (Ae = this.meteogramData) == null || Ae.windDir.push(void 0), De % 6 === 0) {
1710
- const xe = document.createElement("canvas"), Me = xe.getContext("2d");
1711
- xe.width = f.width, xe.height = f.height;
1712
- const He = ((ne = this.meteogramData) == null ? void 0 : ne.windDir[De]) * (Math.PI / 180);
1713
- Me.translate(xe.width / 2, xe.height / 2), Me.rotate(He), Me.translate(-f.width / 2, -f.height / 2), Me.drawImage(f, 0, 0, 64, 64);
1714
- const Se = xe.toDataURL();
1715
- this.meteogramData.windDirIcons[De] = Se;
1716
- } else
1717
- this.meteogramData.windDirIcons[De] = void 0;
1718
- (ge = L == null ? void 0 : L.weather) != null && ge.isDay ? o.end === void 0 && o.start >= 0 && (o.end = De) : o.start === void 0 && (o.start = De), (o.start >= 0 && o.end >= 0 || o.start >= 0 && De === h * 24 - 1) && ((be = this.meteogramData) == null || be.markarea.push([
1719
- {
1720
- x: ((he = this.meteogramData) == null ? void 0 : he.gridOffset.l) + o.start / (h * 24) * (100 - ((Ce = this.meteogramData) == null ? void 0 : Ce.gridOffset.l) - ((Be = this.meteogramData) == null ? void 0 : Be.gridOffset.r)) + "%"
1721
- },
1722
- {
1723
- x: ((de = this.meteogramData) == null ? void 0 : de.gridOffset.l) + (o.end + 1) / (h * 24) * (100 - ((ce = this.meteogramData) == null ? void 0 : ce.gridOffset.l) - ((B = this.meteogramData) == null ? void 0 : B.gridOffset.r)) + "%"
1724
- }
1725
- ]), o = { start: void 0, end: void 0 });
1726
- }
1727
- this.meteogramData.singleAxisOffset.l = ((O = this.meteogramData) == null ? void 0 : O.gridOffset.l) + 0.5 / ((we = ($ = this.meteogramData) == null ? void 0 : $.dates) == null ? void 0 : we.length) * (100 - ((v = this.meteogramData) == null ? void 0 : v.gridOffset.l) - ((i = this.meteogramData) == null ? void 0 : i.gridOffset.r)) + "%", this.meteogramData.singleAxisOffset.r = ((g = this.meteogramData) == null ? void 0 : g.gridOffset.r) + 0.5 / ((Ee = (me = this.meteogramData) == null ? void 0 : me.dates) == null ? void 0 : Ee.length) * (100 - ((y = this.meteogramData) == null ? void 0 : y.gridOffset.l) - ((oe = this.meteogramData) == null ? void 0 : oe.gridOffset.r)) + "%", this.$nextTick(() => {
1728
- this.initMeteogramEchart(14);
1729
- });
1730
- };
1731
- },
1732
- initMeteogramEchart(n) {
1733
- var ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re, le, ie, c, ve, E, z, F, pe, A, Ae, ne, ge, he, Ce, Be, de, ce, B, be, O, $, we, v, i, g, me, Ee, y, oe, De;
1734
- const e = Qe.init(document.getElementById("weather-icons")), a = {
1735
- grid: {
1736
- show: !0,
1737
- bottom: "0%",
1738
- top: "0%",
1739
- left: `${this.meteogramData.gridOffset.l}%`,
1740
- right: `${this.meteogramData.gridOffset.r}%`,
1741
- borderColor: "#666",
1742
- borderWidth: 1,
1743
- z: 1,
1744
- zlevel: 1
1745
- },
1746
- tooltip: {
1747
- trigger: "item",
1748
- show: !0,
1749
- position: "right",
1750
- formatter: (d) => {
1751
- const L = d == null ? void 0 : d.dataIndex;
1752
- return d.seriesName === "Weather Icons" ? `<strong>${this.meteogramData.weatherNames[L]}</strong>` : !1;
1753
- }
1754
- },
1755
- legend: {
1756
- show: !1,
1757
- right: "8%"
1758
- },
1759
- xAxis: {
1760
- left: 0,
1761
- right: 0,
1762
- top: "50%",
1763
- height: "50%",
1764
- type: "category",
1765
- data: (ee = this.meteogramData) == null ? void 0 : ee.dates,
1766
- show: !1
1767
- },
1768
- singleAxis: [
1769
- {
1770
- left: (ae = (te = this.meteogramData) == null ? void 0 : te.singleAxisOffset) == null ? void 0 : ae.l,
1771
- right: (Y = (_ = this.meteogramData) == null ? void 0 : _.singleAxisOffset) == null ? void 0 : Y.r,
1772
- type: "category",
1773
- show: !1,
1774
- axisLine: {
1775
- show: !1
1776
- // 隐藏轴线
1777
- },
1778
- axisTick: {
1779
- show: !1
1780
- // 隐藏刻度
1781
- },
1782
- axisLabel: {
1783
- show: !1
1784
- // 隐藏刻度标签
1785
- },
1786
- splitLine: {
1787
- show: !1
1788
- // 隐藏分割线
1789
- },
1790
- boundaryGap: !1,
1791
- data: (K = this.meteogramData) == null ? void 0 : K.dates,
1792
- top: "50%",
1793
- height: "2%"
1794
- }
1795
- ],
1796
- series: [
1797
- {
1798
- name: "Weather Icons",
1799
- type: "scatter",
1800
- singleAxisIndex: 0,
1801
- coordinateSystem: "singleAxis",
1802
- data: (U = this.meteogramData) == null ? void 0 : U.weatherIcons,
1803
- symbolSize: 24
1804
- }
1805
- ]
1806
- };
1807
- e.setOption(a);
1808
- let h = Math.max(...this.meteogramData.temperaturesY.filter((d) => typeof d == "number" && !isNaN(d))), t = Math.min(...this.meteogramData.temperaturesY.filter((d) => typeof d == "number" && !isNaN(d))), o = Math.floor(t / 5) * 5, p = Math.ceil(h / 5) * 5, f = Math.ceil((p - o) / 5);
1809
- o = Math.floor((o - 2 * f) / 5) * 5, p = Math.ceil((p + 1) / 5) * 5, f = Math.ceil((p - o) / 5);
1810
- let I = "", b = [];
1811
- n === 7 ? (I = "Precip.1h ( mm ) ", b = [
1812
- {
1813
- gte: 50,
1814
- color: "rgba(197, 5, 58, 1)",
1815
- label: "Heavy Rainstorm, >=20mm"
1816
- },
1817
- {
1818
- gte: 8,
1819
- lte: 19.9,
1820
- color: "rgba(248, 1, 1, 1)",
1821
- label: "Rainstorm, <=19.9mm"
1822
- },
1823
- {
1824
- gte: 4,
1825
- lte: 7.9,
1826
- color: "rgba(190, 226, 2, 18)",
1827
- label: "Heavy, <=7.9mm"
1828
- },
1829
- {
1830
- gte: 2,
1831
- lte: 3.9,
1832
- color: "rgba(3, 248, 103, 1)",
1833
- label: "Moderate, <=3.9mm"
1834
- },
1835
- {
1836
- lt: 2,
1837
- color: "rgba(172, 210, 255, 1)",
1838
- label: "Light, <2mm"
1839
- }
1840
- ]) : (I = "Precip.3h ( mm ) ", b = [
1841
- {
1842
- gte: 100,
1843
- color: "rgba(197, 5, 58, 1)",
1844
- label: "Heavy Rainstorm, >=50mm"
1845
- },
1846
- {
1847
- gte: 25,
1848
- lte: 49.9,
1849
- color: "rgba(248, 1, 1, 1)",
1850
- label: "Rainstorm, <=49.9mm"
1851
- },
1852
- {
1853
- gte: 10,
1854
- lte: 24.9,
1855
- color: "rgba(190, 226, 2, 18)",
1856
- label: "Heavy, <=24.9mm"
1857
- },
1858
- {
1859
- gte: 5,
1860
- lte: 9.9,
1861
- color: "rgba(3, 248, 103, 1)",
1862
- label: "Moderate, <=9.9mm"
1863
- },
1864
- {
1865
- lt: 5,
1866
- color: "rgba(172, 210, 255, 1)",
1867
- label: "Light, <5mm"
1868
- }
1869
- ]);
1870
- const x = Qe.init(document.getElementById("weather-condition")), C = {
1871
- title: {
1872
- text: "Weather conditions",
1873
- top: "10px",
1874
- left: "5px",
1875
- textStyle: {
1876
- fontWeight: "normal",
1877
- fontSize: 14
1878
- }
1879
- },
1880
- grid: {
1881
- show: !0,
1882
- bottom: "20%",
1883
- top: "90px",
1884
- left: `${this.meteogramData.gridOffset.l}%`,
1885
- right: `${this.meteogramData.gridOffset.r}%`,
1886
- borderColor: "#666",
1887
- borderWidth: 1,
1888
- z: 1,
1889
- zlevel: 1
1890
- },
1891
- tooltip: {
1892
- trigger: "axis",
1893
- show: !0,
1894
- position: "right",
1895
- formatter: (d) => {
1896
- var xe, Me, Ge, He, Se, _e, Ye, je, Ke, Ue, We, $e, et, tt, st, at, it, ot, nt, rt, lt, At, ht, dt, gt, ct, wt, mt, pt, ut;
1897
- const L = (xe = d == null ? void 0 : d.find((Ie) => Ie.seriesType === "bar")) == null ? void 0 : xe.dataIndex;
1898
- if (d.find((Ie) => Ie.seriesType === "scatter"))
1899
- return !1;
1900
- {
1901
- let Ie = "";
1902
- return n === 7 ? (((Me = d[1]) == null ? void 0 : Me.value) < 2 ? Ie = "rgba(172, 210, 255, 1)" : ((Ge = d[1]) == null ? void 0 : Ge.value) <= 3.9 ? Ie = "rgba(3, 248, 103, 1)" : ((He = d[1]) == null ? void 0 : He.value) <= 7.9 ? Ie = "rgba(190, 226, 2, 18)" : ((Se = d[1]) == null ? void 0 : Se.value) <= 19.9 ? Ie = "rgba(248, 1, 1, 1)" : ((_e = d[1]) == null ? void 0 : _e.value) >= 20 ? Ie = "rgba(197, 5, 58, 1)" : Ie = "rgba(172, 210, 255, 1)", `<div style="font-size: 13px;"><strong>${j((Ye = this.meteogramData) == null ? void 0 : Ye.dates[L]).tz(this.positionGmt).format("MMM-DD/HHmm[LT]")}</strong></div>
1903
- <div style="display: ${(je = this.meteogramData) != null && je.weatherNames[L] ? "block" : "none"}; font-size: 13px;">
1904
- <span>Weather : </span><strong>${(Ke = this.meteogramData) == null ? void 0 : Ke.weatherNames[L]}</strong>
1905
- </div>
1906
- <div style="font-size: 13px;">
1907
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #FF9500;}"></span>
1908
- <span>Temperature : </span><strong>${(We = (Ue = d[0]) == null ? void 0 : Ue.value) == null ? void 0 : We[1]}</strong><span style="padding-left: 3px;">℃</span>
1909
- </div>
1910
- <div style="font-size: 13px;">
1911
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background: ${Ie};"></span>
1912
- <span>Precip.1h : </span><strong>${($e = d[1]) == null ? void 0 : $e.value}</strong><span style="padding-left: 3px;">mm</span>
1913
- </div>
1914
- <div style="font-size: 13px;">
1915
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #c346a9;}"></span>
1916
- <span>Visibility : </span><strong>${(et = d[2]) == null ? void 0 : et.value}</strong><span style="padding-left: 3px;">nm</span>
1917
- </div>`) : n === 14 ? (((tt = d[1]) == null ? void 0 : tt.value) < 5 ? Ie = "rgba(172, 210, 255, 1)" : ((st = d[1]) == null ? void 0 : st.value) <= 9.9 ? Ie = "rgba(3, 248, 103, 1)" : ((at = d[1]) == null ? void 0 : at.value) <= 24.9 ? Ie = "rgba(190, 226, 2, 18)" : ((it = d[1]) == null ? void 0 : it.value) <= 49.9 ? Ie = "rgba(248, 1, 1, 1)" : ((ot = d[1]) == null ? void 0 : ot.value) > 50 ? Ie = "rgba(197, 5, 58, 1)" : Ie = "rgba(172, 210, 255, 1)", `<div style="font-size: 13px;"
1918
- <strong>${j((nt = this.meteogramData) == null ? void 0 : nt.dates[L]).tz(this.positionGmt).format("MMM-DD/HHmm[LT]")}</strong>
1919
- </div>
1920
- <div style="display: ${(rt = this.meteogramData) != null && rt.weatherNames[L] ? "block" : "none"}; font-size: 13px;">
1921
- <span>Weather : </span><strong>${(lt = this.meteogramData) == null ? void 0 : lt.weatherNames[L]}</strong>
1922
- </div>
1923
- <div style="display: ${isNaN((ht = (At = d[0]) == null ? void 0 : At.value) == null ? void 0 : ht[1]) ? "none" : "block"};font-size: 13px;">
1924
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #FF9500;}"></span>
1925
- <span>Temperature : </span><strong>${(gt = (dt = d[0]) == null ? void 0 : dt.value) == null ? void 0 : gt[1]}</strong><span style="padding-left: 3px;">℃</span>
1926
- </div>
1927
- <div style="display: ${isNaN((ct = d[1]) == null ? void 0 : ct.value) ? "none" : "block"};font-size: 13px;">
1928
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background: ${Ie};"></span>
1929
- <span>Precip.3h : </span><strong>${(wt = d[1]) == null ? void 0 : wt.value}</strong><span style="padding-left: 3px;">mm</span>
1930
- </div>
1931
- <div style="display: ${isNaN((pt = (mt = d[0]) == null ? void 0 : mt.value) == null ? void 0 : pt[2]) ? "none" : "block"}font-size: 13px;">
1932
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #c346a9;}"></span>
1933
- <span>Visibility : </span><strong>${(ut = d[2]) == null ? void 0 : ut.value}</strong><span style="padding-left: 3px;">nm</span>
1934
- </div>`) : !1;
1935
- }
1936
- }
1937
- },
1938
- legend: {
1939
- show: !0,
1940
- top: "10px",
1941
- right: `${this.meteogramData.gridOffset.r}%`,
1942
- data: [
1943
- "Temperature",
1944
- "Visibility"
1945
- // {
1946
- // name: 'Precipitation:',
1947
- // icon: 'none',
1948
- // // icon: 'image://data:image/png;base64,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'
1949
- // }
1950
- ],
1951
- itemWidth: 40
1952
- },
1953
- xAxis: {
1954
- show: !0,
1955
- left: 0,
1956
- right: 0,
1957
- top: "50%",
1958
- height: "50%",
1959
- type: "category",
1960
- data: (R = this.meteogramData) == null ? void 0 : R.dates,
1961
- axisLabel: {
1962
- show: !1
1963
- },
1964
- axisLine: {
1965
- show: !1,
1966
- onZero: !1
1967
- },
1968
- axisTick: {
1969
- show: !0,
1970
- inside: !0,
1971
- lineStyle: {
1972
- color: "rgba(0,0,0,0.7)"
1973
- }
1974
- },
1975
- z: 1,
1976
- zlevel: 1
1977
- },
1978
- singleAxis: [
1979
- {
1980
- left: (X = (W = this.meteogramData) == null ? void 0 : W.singleAxisOffset) == null ? void 0 : X.l,
1981
- right: (J = (q = this.meteogramData) == null ? void 0 : q.singleAxisOffset) == null ? void 0 : J.r,
1982
- type: "category",
1983
- show: !1,
1984
- axisLine: {
1985
- show: !1
1986
- // 隐藏轴线
1987
- },
1988
- axisTick: {
1989
- show: !1
1990
- // 隐藏刻度
1991
- },
1992
- axisLabel: {
1993
- show: !1
1994
- // 隐藏刻度标签
1995
- },
1996
- splitLine: {
1997
- show: !1
1998
- // 隐藏分割线
1999
- },
2000
- boundaryGap: !1,
2001
- data: (Z = this.meteogramData) == null ? void 0 : Z.dates,
2002
- top: "17%",
2003
- height: "2%"
2004
- },
2005
- {
2006
- left: (w = (V = this.meteogramData) == null ? void 0 : V.singleAxisOffset) == null ? void 0 : w.l,
2007
- right: (T = (S = this.meteogramData) == null ? void 0 : S.singleAxisOffset) == null ? void 0 : T.r,
2008
- type: "category",
2009
- show: !1,
2010
- axisLine: {
2011
- show: !1
2012
- // 隐藏轴线
2013
- },
2014
- axisTick: {
2015
- show: !1
2016
- // 隐藏刻度
2017
- },
2018
- axisLabel: {
2019
- show: !1
2020
- // 隐藏刻度标签
2021
- },
2022
- splitLine: {
2023
- show: !1
2024
- // 隐藏分割线
2025
- },
2026
- boundaryGap: !1,
2027
- data: (P = this.meteogramData) == null ? void 0 : P.dates,
2028
- top: "27%",
2029
- height: "2%"
2030
- },
2031
- {
2032
- left: (G = (u = this.meteogramData) == null ? void 0 : u.singleAxisOffset) == null ? void 0 : G.l,
2033
- right: (k = (M = this.meteogramData) == null ? void 0 : M.singleAxisOffset) == null ? void 0 : k.r,
2034
- type: "category",
2035
- show: !1,
2036
- axisLine: {
2037
- show: !1
2038
- // 隐藏轴线
2039
- },
2040
- axisTick: {
2041
- show: !1
2042
- // 隐藏刻度
2043
- },
2044
- axisLabel: {
2045
- show: !1
2046
- // 隐藏刻度标签
2047
- },
2048
- splitLine: {
2049
- show: !1
2050
- // 隐藏分割线
2051
- },
2052
- boundaryGap: !1,
2053
- data: (D = this.meteogramData) == null ? void 0 : D.dates,
2054
- top: "84%",
2055
- height: "2%"
2056
- },
2057
- {
2058
- left: (le = (re = this.meteogramData) == null ? void 0 : re.singleAxisOffset) == null ? void 0 : le.l,
2059
- right: (c = (ie = this.meteogramData) == null ? void 0 : ie.singleAxisOffset) == null ? void 0 : c.r,
2060
- type: "category",
2061
- show: !1,
2062
- axisLine: {
2063
- show: !1
2064
- // 隐藏轴线
2065
- },
2066
- axisTick: {
2067
- show: !1
2068
- // 隐藏刻度
2069
- },
2070
- axisLabel: {
2071
- show: !1
2072
- // 隐藏刻度标签
2073
- },
2074
- splitLine: {
2075
- show: !1
2076
- // 隐藏分割线
2077
- },
2078
- boundaryGap: !1,
2079
- data: (ve = this.meteogramData) == null ? void 0 : ve.dates,
2080
- top: "92%",
2081
- height: "2%"
2082
- }
2083
- ],
2084
- yAxis: [
2085
- {
2086
- type: "value",
2087
- name: "Temperature ( ℃ ) ",
2088
- show: !0,
2089
- min: o,
2090
- max: p,
2091
- // data: this.meteogramData?.temperaturesY,
2092
- interval: f,
2093
- splitNumber: 5,
2094
- nameRotate: 90,
2095
- nameLocation: "middle",
2096
- nameGap: 25,
2097
- splitLine: {
2098
- show: !0
2099
- },
2100
- z: 0,
2101
- zlevel: 0
2102
- },
2103
- {
2104
- position: "right",
2105
- type: "value",
2106
- name: I,
2107
- min: 0,
2108
- max: Math.ceil((Math.max(...this.meteogramData.precip.filter((d) => typeof d == "number" && !isNaN(d))) + 1) / 5) * 5,
2109
- interval: Math.ceil((Math.max(...this.meteogramData.precip.filter((d) => typeof d == "number" && !isNaN(d))) + 1) / 5),
2110
- splitNumber: 5,
2111
- show: !0,
2112
- nameRotate: 90,
2113
- nameLocation: "middle",
2114
- nameGap: 25,
2115
- splitLine: {
2116
- show: !0
2117
- },
2118
- z: 0,
2119
- zlevel: 0
2120
- },
2121
- {
2122
- position: "right",
2123
- type: "value",
2124
- name: "visibility ( nm )",
2125
- min: 0,
2126
- max: Math.ceil((Math.max(...this.meteogramData.visibility.filter((d) => typeof d == "number" && !isNaN(d))) + 1) / 5) * 5,
2127
- interval: Math.ceil((Math.max(...this.meteogramData.visibility.filter((d) => typeof d == "number" && !isNaN(d))) + 1) / 5),
2128
- splitNumber: 5,
2129
- show: !0,
2130
- offset: 35,
2131
- nameRotate: 90,
2132
- nameLocation: "middle",
2133
- nameGap: 25,
2134
- splitLine: {
2135
- show: !0
2136
- },
2137
- z: 0,
2138
- zlevel: 0
2139
- }
2140
- ],
2141
- visualMap: {
2142
- type: "piecewise",
2143
- orient: "horizontal",
2144
- top: 31,
2145
- right: "8%",
2146
- show: !0,
2147
- pieces: b,
2148
- seriesIndex: 1,
2149
- dimension: 1
2150
- },
2151
- series: [
2152
- {
2153
- name: "Temperature",
2154
- type: "line",
2155
- yAxisIndex: 0,
2156
- data: (E = this.meteogramData) == null ? void 0 : E.temperaturesX,
2157
- symbol: "none",
2158
- smooth: !1,
2159
- itemStyle: {
2160
- color: "#FF9500"
2161
- },
2162
- label: {
2163
- show: !1
2164
- },
2165
- markArea: {
2166
- z: -1,
2167
- zlevel: -1,
2168
- itemStyle: {
2169
- color: "rgba(239,239,239,0.6)"
2170
- },
2171
- data: (z = this.meteogramData) == null ? void 0 : z.markarea,
2172
- emphasis: {
2173
- disabled: !0
2174
- }
2175
- }
2176
- },
2177
- {
2178
- name: "Precipitation:",
2179
- type: "bar",
2180
- yAxisIndex: 1,
2181
- data: (F = this.meteogramData) == null ? void 0 : F.precip,
2182
- itemStyle: {
2183
- color: "#0c73a8"
2184
- },
2185
- label: {
2186
- show: !1
2187
- }
2188
- },
2189
- {
2190
- name: "Visibility",
2191
- type: "line",
2192
- yAxisIndex: 2,
2193
- data: (pe = this.meteogramData) == null ? void 0 : pe.visibility,
2194
- symbol: "none",
2195
- smooth: !1,
2196
- itemStyle: {
2197
- color: "#c346a9"
2198
- },
2199
- label: {
2200
- show: !1
2201
- },
2202
- markArea: {
2203
- z: -1,
2204
- zlevel: -1,
2205
- itemStyle: {
2206
- color: "rgba(239,239,239,0.6)"
2207
- },
2208
- data: (A = this.meteogramData) == null ? void 0 : A.markarea,
2209
- emphasis: {
2210
- disabled: !0
2211
- }
2212
- }
2213
- },
2214
- {
2215
- singleAxisIndex: 2,
2216
- coordinateSystem: "singleAxis",
2217
- type: "scatter",
2218
- data: (Ae = this.meteogramData) == null ? void 0 : Ae.hours,
2219
- label: {
2220
- show: !0,
2221
- fontSize: 11,
2222
- formatter: "{c}"
2223
- },
2224
- itemStyle: {
2225
- color: "#fff"
2226
- },
2227
- symbolSize: 0
2228
- },
2229
- {
2230
- singleAxisIndex: 3,
2231
- coordinateSystem: "singleAxis",
2232
- type: "scatter",
2233
- data: (ne = this.meteogramData) == null ? void 0 : ne.xDates,
2234
- label: {
2235
- show: !0,
2236
- fontSize: 13,
2237
- formatter: "{c}"
2238
- },
2239
- itemStyle: {
2240
- color: "#fff"
2241
- },
2242
- symbolSize: 0
2243
- }
2244
- ]
2245
- };
2246
- x.setOption(C);
2247
- const Q = Qe.init(document.getElementById("wave-swell")), N = {
2248
- title: {
2249
- text: "Wave & Swell",
2250
- top: "10px",
2251
- left: "5px",
2252
- textStyle: {
2253
- fontWeight: "normal",
2254
- fontSize: 14
2255
- }
2256
- },
2257
- grid: {
2258
- show: !0,
2259
- bottom: "20%",
2260
- top: "40px",
2261
- left: `${this.meteogramData.gridOffset.l}%`,
2262
- right: `${this.meteogramData.gridOffset.r}%`,
2263
- borderColor: "#666",
2264
- borderWidth: 1,
2265
- z: 1,
2266
- zlevel: 1
2267
- },
2268
- tooltip: {
2269
- trigger: "axis",
2270
- triggerOn: "mousemove",
2271
- show: !0,
2272
- position: "right",
2273
- formatter: (d) => {
2274
- var xe, Me, Ge, He, Se, _e, Ye, je, Ke, Ue;
2275
- const L = (xe = d == null ? void 0 : d[0]) == null ? void 0 : xe.dataIndex;
2276
- return d.find((We) => We.seriesType === "scatter") ? !1 : `<div style="font-size: 13px;"><strong>${j((Me = this.meteogramData) == null ? void 0 : Me.dates[L]).tz(this.positionGmt).format("MMM-DD/HHmm[LT]")}</strong></div>
2277
- <div style="font-size: 13px;display: ${isNaN((Ge = d[0]) == null ? void 0 : Ge.value) ? "none" : "block"}">
2278
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #60c43e;}"></span>
2279
- <span>Wind Speed : </span><strong>${(He = d[0]) == null ? void 0 : He.value}</strong><span style="padding-left: 3px;">kts</span>
2280
- </div>
2281
- <div style="font-size: 13px;display: ${isNaN((Se = d[2]) == null ? void 0 : Se.value) ? "none" : "block"}">
2282
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #4ba229;}"></span>
2283
- <span>Wind Gusts : </span><strong>${(_e = d[2]) == null ? void 0 : _e.value}</strong><span style="padding-left: 3px;">kts</span>
2284
- </div>
2285
- <div style="font-size: 13px;display: ${isNaN((Ye = d[3]) == null ? void 0 : Ye.value) ? "none" : "block"}">
2286
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #21baa3;"></span>
2287
- <span>Swell Height : </span><strong>${(je = d[3]) == null ? void 0 : je.value}</strong><span style="padding-left: 3px;">m</span>
2288
- </div>
2289
- <div style="font-size: 13px;display: ${isNaN((Ke = d[4]) == null ? void 0 : Ke.value) ? "none" : "block"}">
2290
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #049f9c;}"></span>
2291
- <span>Sig.Wave Height : </span><strong>${(Ue = d[4]) == null ? void 0 : Ue.value}</strong><span style="padding-left: 3px;">m</span>
2292
- </div>
2293
- `;
2294
- }
2295
- },
2296
- legend: {
2297
- // show: false,
2298
- right: "8%",
2299
- top: "5%",
2300
- itemWidth: 40,
2301
- data: [
2302
- "Wind Speed",
2303
- {
2304
- name: "Wind Direction",
2305
- itemWidth: 20,
2306
- icon: "path://M445.00000001 133.8l44.39999999-44.39999999c18.8-18.8 49.2-18.8 67.8-1e-8L946 477.99999999c18.8 18.8 18.8 49.2 0 67.80000001l-388.6 388.6c-18.8 18.8-49.2 18.8-67.8 0L445.2 890c-19-19-18.6-50 0.8-68.6L686.80000001 592 112 592c-26.6 0-48-21.4-48-48l0-64c0-26.6 21.4-48 48-48L686.80000001 432 445.8 202.4c-19.6-18.6-20-49.6-0.79999999-68.6z",
2307
- itemStyle: {
2308
- color: "#60c43e"
2309
- }
2310
- },
2311
- "Wind Gusts",
2312
- "Swell Height",
2313
- "Sig.Wave Height"
2314
- ]
2315
- },
2316
- xAxis: {
2317
- show: !0,
2318
- left: 0,
2319
- right: 0,
2320
- top: "50%",
2321
- height: "50%",
2322
- type: "category",
2323
- data: (ge = this.meteogramData) == null ? void 0 : ge.dates,
2324
- axisLabel: {
2325
- show: !1
2326
- },
2327
- axisLine: {
2328
- show: !1
2329
- },
2330
- axisTick: {
2331
- show: !0,
2332
- inside: !0,
2333
- lineStyle: {
2334
- color: "rgba(0,0,0,0.7)"
2335
- }
2336
- },
2337
- z: 1,
2338
- zlevel: 1
2339
- },
2340
- singleAxis: [
2341
- {
2342
- left: (Ce = (he = this.meteogramData) == null ? void 0 : he.singleAxisOffset) == null ? void 0 : Ce.l,
2343
- right: (de = (Be = this.meteogramData) == null ? void 0 : Be.singleAxisOffset) == null ? void 0 : de.r,
2344
- type: "category",
2345
- show: !1,
2346
- axisLine: {
2347
- show: !1
2348
- // 隐藏轴线
2349
- },
2350
- axisTick: {
2351
- show: !1
2352
- // 隐藏刻度
2353
- },
2354
- axisLabel: {
2355
- show: !1
2356
- // 隐藏刻度标签
2357
- },
2358
- splitLine: {
2359
- show: !1
2360
- // 隐藏分割线
2361
- },
2362
- boundaryGap: !1,
2363
- data: (ce = this.meteogramData) == null ? void 0 : ce.dates,
2364
- top: "84%",
2365
- height: "2%"
2366
- },
2367
- {
2368
- left: (be = (B = this.meteogramData) == null ? void 0 : B.singleAxisOffset) == null ? void 0 : be.l,
2369
- right: ($ = (O = this.meteogramData) == null ? void 0 : O.singleAxisOffset) == null ? void 0 : $.r,
2370
- type: "category",
2371
- show: !1,
2372
- axisLine: {
2373
- show: !1
2374
- // 隐藏轴线
2375
- },
2376
- axisTick: {
2377
- show: !1
2378
- // 隐藏刻度
2379
- },
2380
- axisLabel: {
2381
- show: !1
2382
- // 隐藏刻度标签
2383
- },
2384
- splitLine: {
2385
- show: !1
2386
- // 隐藏分割线
2387
- },
2388
- boundaryGap: !1,
2389
- data: (we = this.meteogramData) == null ? void 0 : we.dates,
2390
- top: "92%",
2391
- height: "2%"
2392
- }
2393
- ],
2394
- yAxis: [
2395
- {
2396
- type: "value",
2397
- name: "Wind Speed ( kts )",
2398
- show: !0,
2399
- min: 0,
2400
- max: Math.ceil(
2401
- Math.max(...[...this.meteogramData.windGusts, ...this.meteogramData.windspeed].filter((d) => typeof d == "number" && !isNaN(d))) / 5
2402
- ) * 5,
2403
- interval: Math.ceil(
2404
- Math.max(...[...this.meteogramData.windGusts, ...this.meteogramData.windspeed].filter((d) => typeof d == "number" && !isNaN(d))) / 5
2405
- ),
2406
- splitNumber: 5,
2407
- nameRotate: 90,
2408
- nameLocation: "middle",
2409
- nameGap: 25,
2410
- splitLine: {
2411
- show: !0
2412
- },
2413
- z: 0,
2414
- zlevel: 0
2415
- },
2416
- {
2417
- position: "right",
2418
- type: "value",
2419
- name: "Sig.Wave & Swell ( m )",
2420
- min: 0,
2421
- max: Math.ceil(
2422
- Math.max(
2423
- ...[...this.meteogramData.sigWaveHeight, ...this.meteogramData.swellHeight].filter((d) => typeof d == "number" && !isNaN(d))
2424
- ) / 5
2425
- ) * 5,
2426
- interval: Math.ceil(
2427
- Math.max(
2428
- ...[...this.meteogramData.sigWaveHeight, ...this.meteogramData.swellHeight].filter((d) => typeof d == "number" && !isNaN(d))
2429
- ) / 5
2430
- ),
2431
- splitNumber: 5,
2432
- show: !0,
2433
- nameRotate: 90,
2434
- nameLocation: "middle",
2435
- nameGap: 25,
2436
- splitLine: {
2437
- show: !0
2438
- },
2439
- z: 0,
2440
- zlevel: 0
2441
- }
2442
- ],
2443
- series: [
2444
- {
2445
- name: "Wind Speed",
2446
- type: "line",
2447
- yAxisIndex: 0,
2448
- data: (v = this.meteogramData) == null ? void 0 : v.windspeed,
2449
- symbol: "none",
2450
- smooth: !1,
2451
- itemStyle: {
2452
- color: "#60c43e"
2453
- },
2454
- markArea: {
2455
- itemStyle: {
2456
- color: "rgba(239,239,239,0.6)"
2457
- },
2458
- data: (i = this.meteogramData) == null ? void 0 : i.markarea,
2459
- emphasis: {
2460
- disabled: !0
2461
- },
2462
- z: -1,
2463
- zlevel: -1
2464
- }
2465
- },
2466
- {
2467
- name: "Wind Direction",
2468
- type: "custom",
2469
- yAxisIndex: 0,
2470
- renderItem: (d, L) => {
2471
- var Ge, He;
2472
- const xe = d.dataIndex, Me = L.coord([L.value(0), L.value(1)]);
2473
- return ((He = (Ge = this.meteogramData) == null ? void 0 : Ge.windDir) == null ? void 0 : He[xe]) >= 0 ? {
2474
- type: "image",
2475
- position: Me,
2476
- style: {
2477
- image: this.meteogramData.windDirIcons[xe],
2478
- x: -12 / 2,
2479
- y: 6,
2480
- width: 12,
2481
- height: 12
2482
- }
2483
- } : !1;
2484
- },
2485
- data: (g = this.meteogramData) == null ? void 0 : g.windspeed,
2486
- z: 10
2487
- },
2488
- {
2489
- name: "Wind Gusts",
2490
- type: "line",
2491
- yAxisIndex: 0,
2492
- data: (me = this.meteogramData) == null ? void 0 : me.windGusts,
2493
- symbol: "none",
2494
- smooth: !1,
2495
- itemStyle: {
2496
- color: "#4ba229"
2497
- },
2498
- lineStyle: {
2499
- color: "#4ba229",
2500
- type: "dashed"
2501
- },
2502
- label: {
2503
- show: !1
2504
- }
2505
- },
2506
- {
2507
- name: "Swell Height",
2508
- type: "line",
2509
- yAxisIndex: 1,
2510
- data: (Ee = this.meteogramData) == null ? void 0 : Ee.swellHeight,
2511
- symbol: "none",
2512
- smooth: !1,
2513
- itemStyle: {
2514
- color: "#21baa3"
2515
- },
2516
- label: {
2517
- show: !1
2518
- }
2519
- },
2520
- {
2521
- name: "Sig.Wave Height",
2522
- type: "line",
2523
- yAxisIndex: 1,
2524
- data: (y = this.meteogramData) == null ? void 0 : y.sigWaveHeight,
2525
- symbol: "none",
2526
- smooth: !1,
2527
- itemStyle: {
2528
- color: "#017c8a"
2529
- },
2530
- label: {
2531
- show: !1
2532
- }
2533
- },
2534
- {
2535
- name: "Hours",
2536
- singleAxisIndex: 0,
2537
- coordinateSystem: "singleAxis",
2538
- type: "scatter",
2539
- data: (oe = this.meteogramData) == null ? void 0 : oe.hours,
2540
- itemStyle: {
2541
- color: "#fff"
2542
- },
2543
- label: {
2544
- show: !0,
2545
- fontSize: 10,
2546
- formatter: "{c}"
2547
- },
2548
- symbolSize: 0
2549
- },
2550
- {
2551
- name: "Dates",
2552
- singleAxisIndex: 1,
2553
- coordinateSystem: "singleAxis",
2554
- type: "scatter",
2555
- data: (De = this.meteogramData) == null ? void 0 : De.xDates,
2556
- itemStyle: {
2557
- color: "#fff"
2558
- },
2559
- label: {
2560
- show: !0,
2561
- fontSize: 13,
2562
- formatter: "{c}"
2563
- },
2564
- symbolSize: 0
2565
- }
2566
- ]
2567
- };
2568
- Q.setOption(N), Q.on("legendselectchanged", (d) => {
2569
- d.name === "Wind Speed" && (d.selected["Wind Direction"] = d.selected["Wind Speed"]);
2570
- });
2571
- },
2572
- async fetchSeasonalData() {
2573
- var t, o, p, f, I, b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M;
2574
- if (!this.token)
2575
- return !1;
2576
- this.loading.seasonalEchart = !0, this.seasonalData = {
2577
- dates: [],
2578
- xDates: [],
2579
- highTemp: [],
2580
- lastYearHighTemp: [],
2581
- lowTemp: [],
2582
- lastYearLowTemp: [],
2583
- windSpeed: [],
2584
- windDirection: [],
2585
- lastYearWindSpeed: [],
2586
- precip: [],
2587
- lastYearPrecip: []
2588
- };
2589
- const n = j(this.etime).tz(this.positionGmt).date() >= 14 ? j(this.etime).tz(this.positionGmt).month() + 1 : j(this.etime).tz(this.positionGmt).month(), e = j(this.etime).tz(this.positionGmt).set({ month: n });
2590
- this.monthsOptions = [];
2591
- for (let k = 0; k < 6; k++)
2592
- this.monthsOptions.push({
2593
- date: j(this.etime).tz(this.positionGmt).set({ year: e.year(), month: e.month() + k, date: 1, hour: 0, minute: 0, second: 0 }).format(),
2594
- month: j(this.etime).tz(this.positionGmt).set({ year: e.year(), month: e.month() + k }).format("MMMM yyyy")
2595
- });
2596
- this.currentMonth = this.currentMonth ? this.currentMonth : this.monthsOptions[0];
2597
- let a = {
2598
- lat: this.position.lat,
2599
- lng: this.position.lng,
2600
- startDate: j().tz(this.positionGmt).set({ year: e.year(), month: e.month(), date: 1, hour: 0, minute: 0, second: 0 }).format(),
2601
- endDate: j().tz(this.positionGmt).set({ year: e.year(), month: e.month() + 1, date: 1, hour: 0, minute: 0, second: 0 }).format(),
2602
- pastYear: 1
2603
- }, h = await Fe.post(`${this.gateway}/api/arc/meteo2/spot/seasonal`, a, {
2604
- headers: {
2605
- Authorization: this.token
2606
- }
2607
- });
2608
- if ((h == null ? void 0 : h.data.code) === 0) {
2609
- this.etime = (t = h == null ? void 0 : h.data) == null ? void 0 : t.etime, this.positionGmt = (f = (p = (o = this.meteoData) == null ? void 0 : o.weather) == null ? void 0 : p[0]) == null ? void 0 : f.timezone, this.positionOffset = (x = (b = (I = this.meteoData) == null ? void 0 : I.weather) == null ? void 0 : b[0]) == null ? void 0 : x.offset, this.issuedDate = H(this.etime).utc().format("MMM-DD/HHmm[Z], YYYY");
2610
- let k = (C = h == null ? void 0 : h.data.data) == null ? void 0 : C.seasonal, D = j(this.etime).tz(this.positionGmt).set({ year: e.year(), month: e.month(), date: 1, hour: 0, minute: 0, second: 0 }).format();
2611
- const re = H(a.endDate).diff(H(a.startDate), "day", !0);
2612
- for (let E = 0; E < re; E++) {
2613
- const z = H(D).clone().add(E, "d").format(), F = ((Q = Te.pickDaily(k, z)) == null ? void 0 : Q[0]) || {};
2614
- (N = this.seasonalData) == null || N.dates.push(j(z).tz(this.positionGmt).format("MMM-DD")), (ee = this.seasonalData) == null || ee.xDates.push(j(z).tz(this.positionGmt).format("DD")), (_ = this.seasonalData) == null || _.highTemp.push(this.roundPrecision((ae = (te = F == null ? void 0 : F.weather) == null ? void 0 : te.temp) == null ? void 0 : ae.max, 0)), (U = this.seasonalData) == null || U.lowTemp.push(this.roundPrecision((K = (Y = F == null ? void 0 : F.weather) == null ? void 0 : Y.temp) == null ? void 0 : K.min, 0)), (X = this.seasonalData) == null || X.windSpeed.push(this.roundPrecision((W = (R = F.weather) == null ? void 0 : R.wind) == null ? void 0 : W.kts, 1)), (Z = this.seasonalData) == null || Z.windDirection.push((J = (q = F.weather) == null ? void 0 : q.wind) == null ? void 0 : J.direction), (S = this.seasonalData) == null || S.precip.push(this.roundPrecision((w = (V = F == null ? void 0 : F.weather) == null ? void 0 : V.precip) == null ? void 0 : w.sum, 1));
2615
- }
2616
- (((P = (T = h == null ? void 0 : h.data.data) == null ? void 0 : T.past) == null ? void 0 : P.reverse()) || []).forEach((E, z) => {
2617
- var F, pe, A, Ae, ne, ge, he, Ce, Be, de, ce, B, be;
2618
- D = j(this.etime).tz(this.positionGmt).set({ year: e.year() - (z + 1), month: e.month(), date: 1, hour: 0, minute: 0, second: 0 }).format();
2619
- for (let O = 0; O < re; O++) {
2620
- const $ = H(D).clone().add(O, "d").format(), we = ((F = Te.pickDaily(E, $)) == null ? void 0 : F[0]) || {};
2621
- (Ae = this.seasonalData) == null || Ae.lastYearHighTemp.push(this.roundPrecision((A = (pe = we == null ? void 0 : we.weather) == null ? void 0 : pe.temp) == null ? void 0 : A.max, 0)), (he = this.seasonalData) == null || he.lastYearLowTemp.push(this.roundPrecision((ge = (ne = we == null ? void 0 : we.weather) == null ? void 0 : ne.temp) == null ? void 0 : ge.min, 0)), (de = this.seasonalData) == null || de.lastYearWindSpeed.push(this.roundPrecision((Be = (Ce = we.weather) == null ? void 0 : Ce.wind) == null ? void 0 : Be.kts, 1)), (be = this.seasonalData) == null || be.lastYearPrecip.push(this.roundPrecision((B = (ce = we == null ? void 0 : we.weather) == null ? void 0 : ce.precip) == null ? void 0 : B.sum, 1));
2622
- }
2623
- }), this.seasonalData.offset = 8 + 0.5 / ((G = (u = this.seasonalData) == null ? void 0 : u.dates) == null ? void 0 : G.length) * 92 + "%", this.seasonalData.minHighTemp = Math.min(...this.seasonalData.highTemp.filter((E) => typeof E == "number" && !isNaN(E))), this.seasonalData.maxHighTemp = Math.max(...this.seasonalData.highTemp.filter((E) => typeof E == "number" && !isNaN(E))), this.seasonalData.minLowTemp = Math.min(...this.seasonalData.lowTemp.filter((E) => typeof E == "number" && !isNaN(E))), this.seasonalData.maxLowTemp = Math.max(...this.seasonalData.lowTemp.filter((E) => typeof E == "number" && !isNaN(E)));
2624
- let ie = 0;
2625
- this.seasonalData.highTemp.forEach((E, z) => {
2626
- E === this.seasonalData.maxHighTemp && (ie = z);
2627
- }), this.seasonalData.hottestDay = this.seasonalData.dates[ie];
2628
- let c = 0;
2629
- this.seasonalData.lowTemp.forEach((E, z) => {
2630
- E === this.seasonalData.minLowTemp && (c = z);
2631
- }), this.seasonalData.coldestDay = this.seasonalData.dates[c], this.seasonalData.meanWind = this.seasonalData.windSpeed.reduce((E, z) => E + z, 0) / ((M = this.seasonalData.windSpeed) == null ? void 0 : M.length), this.seasonalData.maxWindSpeed = Math.max(...this.seasonalData.windSpeed.filter((E) => typeof E == "number" && !isNaN(E)));
2632
- let ve = 0;
2633
- this.seasonalData.windSpeed.forEach((E, z) => {
2634
- E === this.seasonalData.maxWindSpeed && (ve = z);
2635
- }), this.seasonalData.windiestDay = this.seasonalData.dates[ve], this.seasonalData.dominantWind = this.findMostFrequent(this.seasonalData.windDirection);
2636
- }
2637
- },
2638
- findMostFrequent(n) {
2639
- const e = {};
2640
- let a = 0, h;
2641
- for (const t of n)
2642
- e[t] ? e[t]++ : e[t] = 1;
2643
- for (const t in e)
2644
- e[t] > a && (a = e[t], h = t);
2645
- return h;
2646
- },
2647
- initSeasonalEchart() {
2648
- var Y, K, U, R, W, X, q, J, Z, V;
2649
- let n = Math.max(
2650
- ...[...this.seasonalData.highTemp, ...this.seasonalData.lastYearHighTemp].filter((w) => typeof w == "number" && !isNaN(w))
2651
- ), e = Math.min(...[...this.seasonalData.lowTemp, ...this.seasonalData.lastYearLowTemp].filter((w) => typeof w == "number" && !isNaN(w))), a = Math.ceil((n + 1) / 5) * 5, h = Math.floor((e - 1) / 5) * 5, t = Math.ceil((a - h) / 5);
2652
- const o = {
2653
- title: {
2654
- text: "Temperature",
2655
- top: "10px",
2656
- left: "5px",
2657
- textStyle: {
2658
- fontWeight: "normal",
2659
- fontSize: 14
2660
- }
2661
- },
2662
- grid: {
2663
- show: !0,
2664
- bottom: "15%",
2665
- top: "45px",
2666
- left: "6%",
2667
- right: "6%",
2668
- borderColor: "#666",
2669
- borderWidth: 1,
2670
- z: 1,
2671
- zlevel: 1
2672
- },
2673
- tooltip: {
2674
- trigger: "axis",
2675
- show: !0,
2676
- position: "right",
2677
- formatter: (w) => {
2678
- var T, P, u, G, M, k;
2679
- const S = (T = w == null ? void 0 : w[0]) == null ? void 0 : T.dataIndex;
2680
- return w.find((D) => D.seriesType === "scatter") ? !1 : `<div style="font-size: 13px;"><strong>${(P = this.seasonalData) == null ? void 0 : P.dates[S]}</strong></div>
2681
- <div style="font-size: 13px;">
2682
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #FF9500;}"></span>
2683
- <span>High : </span><strong>${(u = w[0]) == null ? void 0 : u.value}</strong><span style="padding-left: 3px;">℃</span>
2684
- </div>
2685
- <div style="font-size: 13px;">
2686
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #f7c587;}"></span>
2687
- <span>High, last year : </span><strong>${(G = w[1]) == null ? void 0 : G.value}</strong><span style="padding-left: 3px;">mm</span>
2688
- </div>
2689
- <div style="font-size: 13px;">
2690
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #2164bf;}"></span>
2691
- <span>Low : </span><strong>${(M = w[2]) == null ? void 0 : M.value}</strong><span style="padding-left: 3px;">mm</span>
2692
- </div>
2693
- <div style="font-size: 13px;">
2694
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #7baef7;}"></span>
2695
- <span>Low, last year : </span><strong>${(k = w[3]) == null ? void 0 : k.value}</strong><span style="padding-left: 3px;">℃</span>
2696
- </div>
2697
- `;
2698
- }
2699
- },
2700
- legend: {
2701
- show: !0,
2702
- top: "15px",
2703
- right: "6%",
2704
- // data: ['Temperature', 'Precipitation'],
2705
- itemWidth: 40
2706
- },
2707
- xAxis: {
2708
- show: !0,
2709
- left: 0,
2710
- right: 0,
2711
- top: "50%",
2712
- height: "50%",
2713
- type: "category",
2714
- boundaryGap: !0,
2715
- data: (Y = this.seasonalData) == null ? void 0 : Y.xDates,
2716
- axisLabel: {
2717
- show: !0
2718
- },
2719
- axisLine: {
2720
- show: !0,
2721
- onZero: !1
2722
- },
2723
- axisTick: {
2724
- show: !0,
2725
- inside: !0,
2726
- lineStyle: {
2727
- color: "rgba(0,0,0,0.7)"
2728
- }
2729
- },
2730
- z: 1,
2731
- zlevel: 1
2732
- },
2733
- yAxis: [
2734
- {
2735
- type: "value",
2736
- name: "Temperature ( ℃ ) ",
2737
- show: !0,
2738
- min: h,
2739
- max: a,
2740
- interval: t,
2741
- splitNumber: 5,
2742
- nameRotate: 90,
2743
- nameLocation: "middle",
2744
- nameGap: 25,
2745
- splitLine: {
2746
- show: !0
2747
- },
2748
- z: 0,
2749
- zlevel: 0
2750
- }
2751
- ],
2752
- series: [
2753
- {
2754
- name: "High",
2755
- type: "line",
2756
- data: (K = this.seasonalData) == null ? void 0 : K.highTemp,
2757
- symbol: "none",
2758
- smooth: !1,
2759
- itemStyle: {
2760
- color: "#FF9500"
2761
- },
2762
- label: {
2763
- show: !1
2764
- }
2765
- },
2766
- {
2767
- name: "High, last year",
2768
- type: "line",
2769
- symbol: "none",
2770
- data: (U = this.seasonalData) == null ? void 0 : U.lastYearHighTemp,
2771
- itemStyle: {
2772
- color: "#f7c587"
2773
- },
2774
- lineStyle: {
2775
- color: "#f7c587"
2776
- // type: 'dashed',
2777
- },
2778
- label: {
2779
- show: !1
2780
- }
2781
- },
2782
- {
2783
- name: "Low",
2784
- type: "line",
2785
- data: (R = this.seasonalData) == null ? void 0 : R.lowTemp,
2786
- symbol: "none",
2787
- smooth: !1,
2788
- itemStyle: {
2789
- color: "#2164bf"
2790
- },
2791
- label: {
2792
- show: !1
2793
- }
2794
- },
2795
- {
2796
- name: "Low, last year",
2797
- type: "line",
2798
- symbol: "none",
2799
- data: (W = this.seasonalData) == null ? void 0 : W.lastYearLowTemp,
2800
- itemStyle: {
2801
- color: "#7baef7"
2802
- },
2803
- lineStyle: {
2804
- color: "#7baef7"
2805
- // type: 'dashed',
2806
- },
2807
- label: {
2808
- show: !1
2809
- }
2810
- }
2811
- ]
2812
- };
2813
- this.loading.seasonalEchart = !1, this.$nextTick(() => {
2814
- Qe.init(document.getElementById("temperature-echart")).setOption(o);
2815
- });
2816
- function p(w) {
2817
- return {
2818
- image: (() => {
2819
- const S = document.createElementNS("http://www.w3.org/2000/svg", "svg");
2820
- S.setAttribute("width", "10"), S.setAttribute("height", "5"), S.setAttribute("viewBox", "0 0 10 5");
2821
- const T = document.createElementNS("http://www.w3.org/2000/svg", "rect");
2822
- T.setAttribute("x", "0"), T.setAttribute("y", "0"), T.setAttribute("width", "10"), T.setAttribute("height", "5"), T.setAttribute("fill", w), S.appendChild(T);
2823
- const P = document.createElementNS("http://www.w3.org/2000/svg", "line");
2824
- P.setAttribute("x1", "0"), P.setAttribute("y1", "0"), P.setAttribute("x2", "10"), P.setAttribute("y2", "5"), P.setAttribute("stroke", "#fff"), P.setAttribute("stroke-width", "1"), S.appendChild(P);
2825
- const u = new XMLSerializer().serializeToString(S), G = new Blob([u], { type: "image/svg+xml;charset=utf-8" });
2826
- return URL.createObjectURL(G);
2827
- })(),
2828
- repeat: "repeat"
2829
- };
2830
- }
2831
- let f = Math.max(
2832
- ...[...this.seasonalData.windSpeed, ...this.seasonalData.lastYearWindSpeed].filter((w) => typeof w == "number" && !isNaN(w))
2833
- ), b = Math.min(...[...this.seasonalData.windSpeed, ...this.seasonalData.lastYearWindSpeed].filter((w) => typeof w == "number" && !isNaN(w))) > 0 ? 0 : Math.min(...[...this.seasonalData.windSpeed, ...this.seasonalData.lastYearWindSpeed].filter((w) => typeof w == "number" && !isNaN(w))), x = Math.ceil((f + 1) / 5) * 5, C = Math.ceil((x - b) / 5), Q = Math.max(...[...this.seasonalData.precip, ...this.seasonalData.lastYearPrecip].filter((w) => typeof w == "number" && !isNaN(w))), ee = 0, te = Math.ceil(Q * 2 / 5) * 5, ae = Math.ceil((te - ee) / 5);
2834
- const _ = {
2835
- title: {
2836
- text: "Wind & Preciption",
2837
- top: "10px",
2838
- left: "5px",
2839
- textStyle: {
2840
- fontWeight: "normal",
2841
- fontSize: 14
2842
- }
2843
- },
2844
- grid: {
2845
- show: !0,
2846
- bottom: "15%",
2847
- top: "100px",
2848
- left: "6%",
2849
- right: "6%",
2850
- borderColor: "#666",
2851
- borderWidth: 1,
2852
- z: 1,
2853
- zlevel: 1
2854
- },
2855
- tooltip: {
2856
- trigger: "axis",
2857
- show: !0,
2858
- position: "right",
2859
- formatter: (w) => {
2860
- var T, P, u, G, M, k, D, re, le, ie, c, ve, E, z, F, pe;
2861
- const S = (T = w == null ? void 0 : w[0]) == null ? void 0 : T.dataIndex;
2862
- if (w.find((A) => A.seriesType === "scatter"))
2863
- return !1;
2864
- {
2865
- let A = { color: "", colorLastYear: "", url: "" };
2866
- return ((P = w[2]) == null ? void 0 : P.value) < 9.9 ? A.color = "rgba(172, 210, 255, 1)" : ((u = w[2]) == null ? void 0 : u.value) < 24.9 ? A.color = "rgba(3, 248, 103, 1)" : ((G = w[2]) == null ? void 0 : G.value) < 49.9 ? A.color = "rgba(190, 226, 2, 18)" : ((M = w[2]) == null ? void 0 : M.value) < 99.9 ? A.color = "rgba(248, 1, 1, 1)" : ((k = w[2]) == null ? void 0 : k.value) > 100 ? A.color = "rgba(197, 5, 58, 1)" : A.color = "rgba(172, 210, 255, 1)", ((D = w[3]) == null ? void 0 : D.value) < 9.9 ? A.colorLastYear = "rgba(172, 210, 255, 1)" : ((re = w[3]) == null ? void 0 : re.value) < 24.9 ? A.colorLastYear = "rgba(3, 248, 103, 1)" : ((le = w[3]) == null ? void 0 : le.value) < 49.9 ? A.colorLastYear = "rgba(190, 226, 2, 18)" : ((ie = w[3]) == null ? void 0 : ie.value) < 99.9 ? A.colorLastYear = "rgba(248, 1, 1, 1)" : ((c = w[3]) == null ? void 0 : c.value) > 100 ? A.colorLastYear = "rgba(197, 5, 58, 1)" : A.colorLastYear = "rgba(172, 210, 255, 1)", A.url = (() => {
2867
- const Ae = document.createElementNS("http://www.w3.org/2000/svg", "svg");
2868
- Ae.setAttribute("width", "10"), Ae.setAttribute("height", "10"), Ae.setAttribute("viewBox", "0 0 10 10");
2869
- const ne = document.createElementNS("http://www.w3.org/2000/svg", "rect");
2870
- ne.setAttribute("x", "0"), ne.setAttribute("y", "0"), ne.setAttribute("width", "10"), ne.setAttribute("height", "10"), ne.setAttribute("fill", A.colorLastYear), Ae.appendChild(ne);
2871
- const ge = document.createElementNS("http://www.w3.org/2000/svg", "line");
2872
- ge.setAttribute("x1", "0"), ge.setAttribute("y1", "0"), ge.setAttribute("x2", "10"), ge.setAttribute("y2", "5"), ge.setAttribute("stroke", "#fff"), ge.setAttribute("stroke-width", "1"), Ae.appendChild(ge);
2873
- const he = document.createElementNS("http://www.w3.org/2000/svg", "line");
2874
- he.setAttribute("x1", "0"), he.setAttribute("y1", "5"), he.setAttribute("x2", "10"), he.setAttribute("y2", "10"), he.setAttribute("stroke", "#fff"), he.setAttribute("stroke-width", "1"), Ae.appendChild(he);
2875
- const Ce = new XMLSerializer().serializeToString(Ae), Be = new Blob([Ce], { type: "image/svg+xml;charset=utf-8" });
2876
- return URL.createObjectURL(Be);
2877
- })(), `<div style="font-size: 13px;"><strong>${(ve = this.seasonalData) == null ? void 0 : ve.dates[S]}</strong></div>
2878
- <div style="font-size: 13px;">
2879
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #60c43e;}"></span>
2880
- <span>Wind : </span><strong>${(E = w[0]) == null ? void 0 : E.value}</strong><span style="padding-left: 3px;">kts</span>
2881
- </div>
2882
- <div style="font-size: 13px;">
2883
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #9af77b;}"></span>
2884
- <span>Wind, last year : </span><strong>${(z = w[1]) == null ? void 0 : z.value}</strong><span style="padding-left: 3px;">kts</span>
2885
- </div>
2886
- <div style="font-size: 13px;">
2887
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: ${A.color};}"></span>
2888
- <span>Precip : </span><strong>${(F = w[2]) == null ? void 0 : F.value}</strong><span style="padding-left: 3px;">mm</span>
2889
- </div>
2890
- <div style="font-size: 13px;">
2891
- <img src="${A.url}" style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;}" />
2892
- <span>Precip, last year : </span><strong>${(pe = w[3]) == null ? void 0 : pe.value}</strong><span style="padding-left: 3px;">mm</span>
2893
- </div>
2894
- `;
2895
- }
2896
- }
2897
- },
2898
- legend: {
2899
- show: !0,
2900
- // orient: 'vertical',
2901
- top: "15px",
2902
- right: "6%",
2903
- data: [
2904
- "Wind",
2905
- "Wind, last year"
2906
- // '\n',
2907
- // {
2908
- // name: 'Precip',
2909
- // icon: 'none'
2910
- // // icon: 'image://data:image/png;base64,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'
2911
- // },
2912
- // '\n',
2913
- // {
2914
- // name: 'Precip, last year',
2915
- // icon: 'none'
2916
- // // icon: 'image://data:image/png;base64,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'
2917
- // }
2918
- ],
2919
- itemWidth: 40
2920
- },
2921
- xAxis: {
2922
- show: !0,
2923
- left: 0,
2924
- right: 0,
2925
- top: "50%",
2926
- height: "50%",
2927
- type: "category",
2928
- boundaryGap: !0,
2929
- data: (X = this.seasonalData) == null ? void 0 : X.xDates,
2930
- axisLabel: {
2931
- show: !0
2932
- },
2933
- axisLine: {
2934
- show: !0
2935
- },
2936
- axisTick: {
2937
- show: !0,
2938
- inside: !0,
2939
- lineStyle: {
2940
- color: "rgba(0,0,0,0.7)"
2941
- }
2942
- },
2943
- z: 1,
2944
- zlevel: 1
2945
- },
2946
- yAxis: [
2947
- {
2948
- type: "value",
2949
- name: "Wind speed max ( kts ) ",
2950
- show: !0,
2951
- min: b,
2952
- max: x,
2953
- interval: C,
2954
- splitNumber: 5,
2955
- nameRotate: 90,
2956
- nameLocation: "middle",
2957
- nameGap: 25,
2958
- splitLine: {
2959
- show: !0
2960
- },
2961
- z: 0,
2962
- zlevel: 0
2963
- },
2964
- {
2965
- type: "value",
2966
- name: "Precipitation ( mm ) ",
2967
- show: !0,
2968
- min: ee,
2969
- max: te,
2970
- interval: ae,
2971
- splitNumber: 5,
2972
- nameRotate: 90,
2973
- nameLocation: "middle",
2974
- nameGap: 30,
2975
- splitLine: {
2976
- show: !0
2977
- },
2978
- z: 0,
2979
- zlevel: 0
2980
- }
2981
- ],
2982
- visualMap: [
2983
- {
2984
- type: "piecewise",
2985
- orient: "horizontal",
2986
- top: 40,
2987
- right: "6%",
2988
- show: !0,
2989
- pieces: [
2990
- {
2991
- gte: 100,
2992
- color: "rgba(197, 5, 58, 1)",
2993
- label: "Heavy Rainstorm, >=100mm"
2994
- },
2995
- {
2996
- gte: 50,
2997
- lte: 99.9,
2998
- color: "rgba(248, 1, 1, 1)",
2999
- label: "Rainstorm, <=99.9mm"
3000
- },
3001
- {
3002
- gte: 25,
3003
- lte: 49.9,
3004
- color: "rgba(190, 226, 2, 18)",
3005
- label: "Heavy, <=49.9mm"
3006
- },
3007
- {
3008
- gte: 10,
3009
- lte: 24.9,
3010
- color: "rgba(3, 248, 103, 1)",
3011
- label: "Moderate, <=24.9mm"
3012
- },
3013
- {
3014
- lt: 10,
3015
- color: "rgba(172, 210, 255, 1)",
3016
- label: "Light, <10mm"
3017
- }
3018
- ],
3019
- seriesIndex: 2,
3020
- dimension: 1
3021
- },
3022
- {
3023
- type: "piecewise",
3024
- orient: "horizontal",
3025
- top: 65,
3026
- right: "6%",
3027
- show: !0,
3028
- pieces: [
3029
- {
3030
- gte: 100,
3031
- color: p("#C5053A"),
3032
- label: "Heavy Rainstorm, last year"
3033
- },
3034
- {
3035
- gte: 50,
3036
- lte: 99.9,
3037
- color: p("#F80101"),
3038
- label: "Rainstorm, last year"
3039
- },
3040
- {
3041
- gte: 25,
3042
- lte: 49.9,
3043
- color: p("#BEE202"),
3044
- label: "Heavy, last year"
3045
- },
3046
- {
3047
- gte: 10,
3048
- lte: 24.9,
3049
- color: p("#03F867"),
3050
- label: "Moderate, last year"
3051
- },
3052
- {
3053
- lt: 10,
3054
- color: p("#ACD2FF"),
3055
- label: "Light, last year"
3056
- }
3057
- ],
3058
- seriesIndex: 3,
3059
- dimension: 1
3060
- }
3061
- ],
3062
- series: [
3063
- {
3064
- name: "Wind",
3065
- type: "line",
3066
- data: (q = this.seasonalData) == null ? void 0 : q.windSpeed,
3067
- symbol: "none",
3068
- smooth: !1,
3069
- itemStyle: {
3070
- color: "#60c43e"
3071
- },
3072
- label: {
3073
- show: !1
3074
- }
3075
- },
3076
- {
3077
- name: "Wind, last year",
3078
- type: "line",
3079
- symbol: "none",
3080
- data: (J = this.seasonalData) == null ? void 0 : J.lastYearWindSpeed,
3081
- itemStyle: {
3082
- color: "#9af77b"
3083
- },
3084
- lineStyle: {
3085
- color: "#9af77b"
3086
- // type: 'dashed',
3087
- },
3088
- label: {
3089
- show: !1
3090
- }
3091
- },
3092
- {
3093
- name: "Precip",
3094
- type: "bar",
3095
- yAxisIndex: 1,
3096
- barWidth: "30%",
3097
- data: (Z = this.seasonalData) == null ? void 0 : Z.precip,
3098
- symbol: "none",
3099
- smooth: !1,
3100
- itemStyle: {
3101
- color: "#0c73a8"
3102
- },
3103
- label: {
3104
- show: !1
3105
- }
3106
- },
3107
- {
3108
- name: "Precip, last year",
3109
- type: "bar",
3110
- yAxisIndex: 1,
3111
- barWidth: "30%",
3112
- data: (V = this.seasonalData) == null ? void 0 : V.lastYearPrecip,
3113
- itemStyle: {
3114
- color: "rgba(12,116,168,0.5)"
3115
- },
3116
- label: {
3117
- show: !1
3118
- }
3119
- }
3120
- ]
3121
- };
3122
- this.$nextTick(() => {
3123
- Qe.init(document.getElementById("wind-precip-echart")).setOption(_);
3124
- });
3125
- },
3126
- disposeEcharts() {
3127
- document.getElementById("weather-chart") && Qe.dispose(document.getElementById("weather-chart")), document.getElementById("weather-icons") && Qe.dispose(document.getElementById("weather-icons")), document.getElementById("weather-condition") && Qe.dispose(document.getElementById("weather-condition")), document.getElementById("wave-swell") && Qe.dispose(document.getElementById("wave-swell")), document.getElementById("temperature-echart") && Qe.dispose(document.getElementById("temperature-echart")), document.getElementById("wind-precip-echart") && Qe.dispose(document.getElementById("wind-precip-echart"));
3128
- },
3129
- initHoursTableData() {
3130
- var n, e, a, h, t, o, p, f, I, b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G;
3131
- this.hoursTableData = {
3132
- hours: [],
3133
- utcHours: [],
3134
- weatherUrls: [],
3135
- weatherNames: [],
3136
- temp: [],
3137
- precipProbability: [],
3138
- precip1h: [],
3139
- visibility: [],
3140
- humidity: [],
3141
- windSpeed: [],
3142
- windDir: [],
3143
- windGust: [],
3144
- sigwaveHeight: [],
3145
- sigwaveDir: [],
3146
- windwaveHeight: [],
3147
- windwaveDir: [],
3148
- windwavePeriod: [],
3149
- swellHeight: [],
3150
- swellDir: [],
3151
- swellPeriod: [],
3152
- currentSpeed: [],
3153
- currentDir: [],
3154
- seaLevel: [],
3155
- seaTemp: []
3156
- };
3157
- for (let M = 0; M < 24; M++) {
3158
- const k = H(this.pickedDate).clone().add(M, "h").format();
3159
- this.hoursTableData.hours.push(k);
3160
- const D = ((n = Te.pickHourly(this.meteoData, k)) == null ? void 0 : n[0]) || {};
3161
- this.hoursTableData.weatherUrls.push((e = D.weather) == null ? void 0 : e.url), this.hoursTableData.weatherNames.push(((a = D.weather) == null ? void 0 : a.name) ?? "-"), this.hoursTableData.temp.push(this.roundPrecision((h = D.weather) == null ? void 0 : h.temp, 0) ?? "-"), this.hoursTableData.precipProbability.push(this.roundPrecision((o = (t = D.weather) == null ? void 0 : t.precip) == null ? void 0 : o.probability, 1) ?? "-"), this.hoursTableData.precip1h.push(this.roundPrecision((f = (p = D.weather) == null ? void 0 : p.precip) == null ? void 0 : f.sum, 1) ?? "-"), this.hoursTableData.visibility.push(this.roundPrecision((I = D.weather) == null ? void 0 : I.visibility, 0) ?? "-"), this.hoursTableData.humidity.push(this.roundPrecision((b = D.weather) == null ? void 0 : b.rh, 0) ?? "-"), this.hoursTableData.windSpeed.push(this.roundPrecision((C = (x = D.weather) == null ? void 0 : x.wind) == null ? void 0 : C.kts, 1)), this.hoursTableData.windDir.push((N = (Q = D.weather) == null ? void 0 : Q.wind) == null ? void 0 : N.bearing), this.hoursTableData.windGust.push(this.roundPrecision((te = (ee = D.weather) == null ? void 0 : ee.wind) == null ? void 0 : te.gusts, 1) ?? "-"), this.hoursTableData.sigwaveHeight.push(this.roundPrecision((_ = (ae = D.wave) == null ? void 0 : ae.sig) == null ? void 0 : _.height, 1) ?? "-"), this.hoursTableData.sigwaveDir.push((K = (Y = D.wave) == null ? void 0 : Y.sig) == null ? void 0 : K.bearing), this.hoursTableData.windwaveHeight.push(this.roundPrecision((R = (U = D.wave) == null ? void 0 : U.wd) == null ? void 0 : R.height, 1) ?? "-"), this.hoursTableData.windwaveDir.push((X = (W = D.wave) == null ? void 0 : W.wd) == null ? void 0 : X.bearing), this.hoursTableData.windwavePeriod.push(this.roundPrecision((J = (q = D.wave) == null ? void 0 : q.wd) == null ? void 0 : J.period, 1) ?? "-"), this.hoursTableData.swellHeight.push(this.roundPrecision((V = (Z = D.wave) == null ? void 0 : Z.swell) == null ? void 0 : V.height, 1) ?? "-"), this.hoursTableData.swellDir.push((S = (w = D.wave) == null ? void 0 : w.swell) == null ? void 0 : S.bearing), this.hoursTableData.swellPeriod.push(this.roundPrecision((P = (T = D.wave) == null ? void 0 : T.swell) == null ? void 0 : P.period, 1) ?? "-"), this.hoursTableData.currentSpeed.push(this.roundPrecision((u = D.current) == null ? void 0 : u.speed, 1) ?? "-"), this.hoursTableData.currentDir.push((G = D.current) == null ? void 0 : G.bearing), this.hoursTableData.seaLevel.push(this.roundPrecision(D.height, 1) ?? "-"), this.hoursTableData.seaTemp.push(this.roundPrecision(D.sst, 0) ?? "-");
3162
- }
3163
- this.loading.hoursTable = !1;
3164
- },
3165
- handleClearHoursTable() {
3166
- this.position = {}, this.meteoData = {}, this.followItem = void 0, Qe && document.getElementById("weather-chart") && Qe.dispose(document.getElementById("weather-chart"));
3167
- },
3168
- initDaysTableData() {
3169
- var e, a, h, t, o, p, f, I, b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re;
3170
- this.daysTableData = [];
3171
- const n = j(this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
3172
- for (let le = 0; le < 14; le++) {
3173
- const ie = H(n).clone().add(le, "d").format(), c = ((e = Te.pickDaily(this.meteoData, ie)) == null ? void 0 : e[0]) || {};
3174
- this.daysTableData.push({
3175
- localWeek: this.computeWeekLT(ie),
3176
- localDate: this.computeMMMDDLT(ie),
3177
- weatherUrl: (a = c == null ? void 0 : c.weather) == null ? void 0 : a.url,
3178
- minTemp: this.roundPrecision((t = (h = c == null ? void 0 : c.weather) == null ? void 0 : h.temp) == null ? void 0 : t.min, 0) ?? "-",
3179
- maxTemp: this.roundPrecision((p = (o = c == null ? void 0 : c.weather) == null ? void 0 : o.temp) == null ? void 0 : p.max, 0) ?? "-",
3180
- weatherName: (f = c == null ? void 0 : c.weather) == null ? void 0 : f.name,
3181
- precipSum: this.roundPrecision((b = (I = c == null ? void 0 : c.weather) == null ? void 0 : I.precip) == null ? void 0 : b.sum, 1) ?? "-",
3182
- precipRainSum: this.roundPrecision((C = (x = c == null ? void 0 : c.weather) == null ? void 0 : x.precip) == null ? void 0 : C.rainSum, 1) ?? "-",
3183
- precipSnowfallSum: this.roundPrecision((N = (Q = c == null ? void 0 : c.weather) == null ? void 0 : Q.precip) == null ? void 0 : N.snowfallSum, 1) ?? "-",
3184
- windSpeedMax: this.roundPrecision((te = (ee = c == null ? void 0 : c.weather) == null ? void 0 : ee.wind) == null ? void 0 : te.kts, 1) ?? "-",
3185
- windSpeedDir: (_ = (ae = c == null ? void 0 : c.weather) == null ? void 0 : ae.wind) == null ? void 0 : _.bearing,
3186
- gustSpeedMax: this.roundPrecision((K = (Y = c == null ? void 0 : c.weather) == null ? void 0 : Y.wind) == null ? void 0 : K.gusts, 1) ?? "-",
3187
- windWaveHeight: this.roundPrecision((R = (U = c == null ? void 0 : c.wave) == null ? void 0 : U.wd) == null ? void 0 : R.height, 1) ?? "-",
3188
- windWavePeriod: this.roundPrecision((X = (W = c == null ? void 0 : c.wave) == null ? void 0 : W.wd) == null ? void 0 : X.period, 1) ?? "-",
3189
- windWaveDir: (J = (q = c == null ? void 0 : c.wave) == null ? void 0 : q.wd) == null ? void 0 : J.bearing,
3190
- swellWaveHeight: this.roundPrecision((V = (Z = c == null ? void 0 : c.wave) == null ? void 0 : Z.swell) == null ? void 0 : V.height, 1) ?? "-",
3191
- swellWavePeriod: this.roundPrecision((S = (w = c == null ? void 0 : c.wave) == null ? void 0 : w.swell) == null ? void 0 : S.period, 1) ?? "-",
3192
- swellWaveDir: (P = (T = c == null ? void 0 : c.wave) == null ? void 0 : T.swell) == null ? void 0 : P.bearing,
3193
- sigWaveHeight: this.roundPrecision((G = (u = c == null ? void 0 : c.wave) == null ? void 0 : u.sig) == null ? void 0 : G.height, 1) ?? "-",
3194
- sigWavePeriod: this.roundPrecision((k = (M = c == null ? void 0 : c.wave) == null ? void 0 : M.sig) == null ? void 0 : k.period, 1) ?? "-",
3195
- sigWaveDir: (re = (D = c == null ? void 0 : c.wave) == null ? void 0 : D.sig) == null ? void 0 : re.bearing
3196
- });
3197
- }
3198
- this.loading.daysTable = !1;
3199
- },
3200
- initHourlyTableData(n, e, a, h) {
3201
- var f, I, b, x, C, Q, N, ee, te, ae, _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re, le, ie, c, ve, E;
3202
- this.hourlyTableData = [];
3203
- const t = e || 14, o = a || this.etime, p = j(o).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
3204
- for (let z = 0; z < t * 24; z++) {
3205
- let F, pe;
3206
- if (z % 3 === 0 && (pe = 3), h ? z % 3 === 0 && (F = H(p).clone().add(z, "h").format()) : z < 3 * 24 ? F = H(p).clone().add(z, "h").format() : z < 7 * 24 ? z % 3 === 0 && (F = H(p).clone().add(z, "h").format()) : z % 6 === 0 && (F = H(p).clone().add(z, "h").format()), F) {
3207
- const A = ((f = Te.pickHourly(n, F)) == null ? void 0 : f[0]) || {}, Ae = pe === 6 ? this.roundPrecision((b = (I = A == null ? void 0 : A.weather) == null ? void 0 : I.precip) == null ? void 0 : b.sum6Hours, 1) : pe === 3 ? this.roundPrecision((C = (x = A == null ? void 0 : A.weather) == null ? void 0 : x.precip) == null ? void 0 : C.sum3Hours, 1) : "-";
3208
- this.hourlyTableData.push({
3209
- localDate: this.computeMMMDDHHmmLT(F),
3210
- temp: this.roundPrecision((Q = A == null ? void 0 : A.weather) == null ? void 0 : Q.temp, 0) ?? "-",
3211
- precipSum: Ae ?? "-",
3212
- visibility: this.roundPrecision((N = A == null ? void 0 : A.weather) == null ? void 0 : N.visibility, 1) ?? "-",
3213
- windSpeed: this.roundPrecision((te = (ee = A == null ? void 0 : A.weather) == null ? void 0 : ee.wind) == null ? void 0 : te.kts, 1) ?? "-",
3214
- windDir: (_ = (ae = A == null ? void 0 : A.weather) == null ? void 0 : ae.wind) == null ? void 0 : _.direction,
3215
- windBearing: (K = (Y = A == null ? void 0 : A.weather) == null ? void 0 : Y.wind) == null ? void 0 : K.bearing,
3216
- windBF: ((R = (U = A == null ? void 0 : A.weather) == null ? void 0 : U.wind) == null ? void 0 : R.scale) ?? "-",
3217
- windGusts: this.roundPrecision((X = (W = A == null ? void 0 : A.weather) == null ? void 0 : W.wind) == null ? void 0 : X.gusts, 1) ?? "-",
3218
- windWaveHeight: this.roundPrecision((J = (q = A == null ? void 0 : A.wave) == null ? void 0 : q.wd) == null ? void 0 : J.height, 1) ?? "-",
3219
- windWavePeriod: this.roundPrecision((V = (Z = A == null ? void 0 : A.wave) == null ? void 0 : Z.wd) == null ? void 0 : V.period, 1) ?? "-",
3220
- windWaveDir: (S = (w = A == null ? void 0 : A.wave) == null ? void 0 : w.wd) == null ? void 0 : S.direction,
3221
- windWaveBearing: (P = (T = A == null ? void 0 : A.wave) == null ? void 0 : T.wd) == null ? void 0 : P.bearing,
3222
- sigWaveHeight: this.roundPrecision((G = (u = A == null ? void 0 : A.wave) == null ? void 0 : u.sig) == null ? void 0 : G.height, 1) ?? "-",
3223
- sigWavePeriod: this.roundPrecision((k = (M = A == null ? void 0 : A.wave) == null ? void 0 : M.sig) == null ? void 0 : k.period, 1) ?? "-",
3224
- sigWaveDir: (re = (D = A == null ? void 0 : A.wave) == null ? void 0 : D.sig) == null ? void 0 : re.direction,
3225
- sigWaveBearing: (ie = (le = A == null ? void 0 : A.wave) == null ? void 0 : le.sig) == null ? void 0 : ie.bearing,
3226
- currentDir: (c = A == null ? void 0 : A.current) == null ? void 0 : c.direction,
3227
- currentSpd: this.roundPrecision((ve = A == null ? void 0 : A.current) == null ? void 0 : ve.kts, 1) ?? "-",
3228
- currentBearing: (E = A == null ? void 0 : A.current) == null ? void 0 : E.bearing,
3229
- seaLevel: this.roundPrecision(A == null ? void 0 : A.height, 1) ?? "-",
3230
- seaSurfaceTemp: this.roundPrecision(A == null ? void 0 : A.sst, 0) ?? "-"
3231
- });
3232
- }
3233
- }
3234
- this.loading.hourlyTable = !1;
3235
- },
3236
- async handleSelectMonth(n) {
3237
- this.currentMonth = n, await this.fetchSeasonalData(), this.initSeasonalEchart();
3238
- },
3239
- async handleDateRange() {
3240
- const { year0: n, month0: e, date0: a, year1: h, month1: t, date1: o } = {
3241
- year0: H(this.dateRange[0]).year(),
3242
- month0: H(this.dateRange[0]).month(),
3243
- date0: H(this.dateRange[0]).date(),
3244
- year1: H(this.dateRange[1]).year(),
3245
- month1: H(this.dateRange[1]).month(),
3246
- date1: H(this.dateRange[1]).date()
3247
- };
3248
- this.dateRangeZ = [
3249
- H(this.dateRangeZ[0]).set({ year: n, month: e, date: a }).utc().format(),
3250
- H(this.dateRangeZ[1]).set({ year: h, month: t, date: o }).utc().format()
3251
- ];
3252
- const p = H(this.dateRangeZ[1]).diff(H(this.dateRangeZ[0]), "d", !0) + 1;
3253
- await this.fetchHistoryMeteo(p), this.handleMeteogramData14(this.meteoData, p, this.dateRangeZ[0]), this.initHourlyTableData(this.meteoData, p, this.dateRangeZ[0], !0), this.selectDate = void 0;
3254
- },
3255
- handlePickDate(n) {
3256
- n[1] ? this.selectDate = null : this.selectDate = n[0].getTime();
3257
- }
3258
- }
3259
- }, Ct = { class: "spot-report" }, It = { class: "search-header-box" }, Et = { class: "search-header-box-inner flex-between" }, Qt = { class: "search-box flex-start" }, Mt = { class: "menu-box flex-end" }, kt = { class: "content-box" }, Lt = { class: "title-section flex-between" }, zt = { class: "main-title" }, Ht = { class: "sub-title" }, Pt = { key: 0 }, Nt = { class: "flex-end" }, Tt = {
3260
- key: 0,
3261
- class: "meteogram-echart-section"
3262
- }, Gt = {
3263
- key: 0,
3264
- class: "card"
3265
- }, St = { class: "title flex-start" }, Ft = { style: { "margin-right": "5px" } }, Ot = { class: "datetime-select-box" }, _t = {
3266
- key: 1,
3267
- class: "card flex-center"
3268
- }, Yt = {
3269
- key: 2,
3270
- class: "card flex-center"
3271
- }, jt = {
3272
- key: 1,
3273
- class: "weather-echart-section"
3274
- }, Kt = {
3275
- key: 0,
3276
- id: "weather-chart",
3277
- class: "weather-chart"
3278
- }, Ut = {
3279
- key: 1,
3280
- class: "weather-chart weather-chart-loading flex-center"
3281
- }, Rt = {
3282
- key: 2,
3283
- class: "weather-chart flex-center"
3284
- }, Wt = {
3285
- key: 2,
3286
- class: "hours-table-section",
3287
- style: { border: "1px solid var(--idm-gray-light)" }
3288
- }, Xt = {
3289
- key: 0,
3290
- class: "card"
3291
- }, qt = { class: "date" }, Jt = { class: "basic-table" }, Zt = { class: "day" }, Vt = { class: "hour" }, $t = { class: "icon" }, es = ["src"], ts = { class: "text" }, ss = { class: "text" }, as = { class: "text" }, is = { class: "text" }, os = { class: "text" }, ns = { class: "text" }, rs = { key: 1 }, ls = { class: "text" }, As = { class: "text" }, hs = { class: "wave-current-table" }, ds = { class: "text" }, gs = { class: "text" }, cs = { key: 1 }, ws = { class: "text" }, ms = { class: "text" }, ps = { class: "text" }, us = { key: 1 }, fs = { class: "text" }, ys = { class: "text" }, vs = { class: "text" }, Ds = { key: 1 }, xs = { class: "text" }, Bs = { class: "sea-table" }, bs = { class: "text" }, Cs = { class: "text" }, Is = {
3292
- key: 1,
3293
- class: "card card-loading flex-center"
3294
- }, Es = {
3295
- key: 2,
3296
- class: "card flex-center"
3297
- }, Qs = {
3298
- key: 3,
3299
- class: "days-table-section"
3300
- }, Ms = {
3301
- key: 0,
3302
- class: "card"
3303
- }, ks = { class: "conditions-table" }, Ls = {
3304
- rowspan: "1",
3305
- colspan: "1",
3306
- class: "tr-title font-gray",
3307
- style: { "text-align": "right", "padding-right": "10px", "box-sizing": "border-box" }
3308
- }, zs = {
3309
- rowspan: "1",
3310
- colspan: "1"
3311
- }, Hs = ["src"], Ps = {
3312
- rowspan: "1",
3313
- colspan: "1",
3314
- class: "text-align-left"
3315
- }, Ns = {
3316
- rowspan: "1",
3317
- colspan: "1",
3318
- class: "text-align-left"
3319
- }, Ts = {
3320
- rowspan: "1",
3321
- colspan: "1",
3322
- class: "text-align-left"
3323
- }, Gs = {
3324
- rowspan: "1",
3325
- colspan: "1",
3326
- class: "text-align-left"
3327
- }, Ss = {
3328
- rowspan: "1",
3329
- colspan: "1",
3330
- class: "text-align-left"
3331
- }, Fs = {
3332
- rowspan: "1",
3333
- colspan: "1",
3334
- class: "text-align-right",
3335
- style: { "padding-right": "30px" }
3336
- }, Os = { key: 1 }, _s = {
3337
- rowspan: "1",
3338
- colspan: "1",
3339
- class: "text-align-right",
3340
- style: { "padding-right": "25px" }
3341
- }, Ys = {
3342
- rowspan: "1",
3343
- colspan: "1",
3344
- class: "text-align-right",
3345
- style: { "padding-right": "30px" }
3346
- }, js = { key: 1 }, Ks = {
3347
- rowspan: "1",
3348
- colspan: "1",
3349
- class: "text-align-right",
3350
- style: { "padding-right": "30px" }
3351
- }, Us = { key: 1 }, Rs = {
3352
- rowspan: "1",
3353
- colspan: "1",
3354
- class: "text-align-right",
3355
- style: { "padding-right": "30px" }
3356
- }, Ws = { key: 1 }, Xs = {
3357
- key: 1,
3358
- class: "card card-loading flex-center"
3359
- }, qs = {
3360
- key: 2,
3361
- class: "card flex-center"
3362
- }, Js = {
3363
- key: 4,
3364
- class: "hourly-table-section"
3365
- }, Zs = {
3366
- key: 0,
3367
- class: "card"
3368
- }, Vs = { class: "conditions-table" }, $s = {
3369
- rowspan: "1",
3370
- colspan: "1",
3371
- class: "border"
3372
- }, ea = {
3373
- rowspan: "1",
3374
- colspan: "1",
3375
- class: "border"
3376
- }, ta = {
3377
- rowspan: "1",
3378
- colspan: "1",
3379
- class: "border"
3380
- }, sa = {
3381
- rowspan: "1",
3382
- colspan: "1",
3383
- class: "border"
3384
- }, aa = {
3385
- rowspan: "1",
3386
- colspan: "1",
3387
- class: "border",
3388
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3389
- }, ia = { key: 1 }, oa = {
3390
- rowspan: "1",
3391
- colspan: "1",
3392
- class: "border"
3393
- }, na = {
3394
- rowspan: "1",
3395
- colspan: "1",
3396
- class: "border"
3397
- }, ra = {
3398
- rowspan: "1",
3399
- colspan: "1",
3400
- class: "border"
3401
- }, la = {
3402
- rowspan: "1",
3403
- colspan: "1",
3404
- class: "border",
3405
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3406
- }, Aa = { key: 1 }, ha = {
3407
- rowspan: "1",
3408
- colspan: "1",
3409
- class: "border"
3410
- }, da = {
3411
- rowspan: "1",
3412
- colspan: "1",
3413
- class: "border"
3414
- }, ga = {
3415
- rowspan: "1",
3416
- colspan: "1",
3417
- class: "border",
3418
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3419
- }, ca = { key: 1 }, wa = {
3420
- rowspan: "1",
3421
- colspan: "1",
3422
- class: "border"
3423
- }, ma = {
3424
- rowspan: "1",
3425
- colspan: "1",
3426
- class: "border"
3427
- }, pa = {
3428
- rowspan: "1",
3429
- colspan: "1",
3430
- class: "border",
3431
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3432
- }, ua = { key: 1 }, fa = {
3433
- rowspan: "1",
3434
- colspan: "1",
3435
- class: "border"
3436
- }, ya = {
3437
- rowspan: "1",
3438
- colspan: "1",
3439
- class: "border"
3440
- }, va = {
3441
- rowspan: "1",
3442
- colspan: "1",
3443
- class: "border"
3444
- }, Da = {
3445
- key: 1,
3446
- class: "card card-loading flex-center"
3447
- }, xa = {
3448
- key: 2,
3449
- class: "card flex-center"
3450
- }, Ba = {
3451
- key: 5,
3452
- class: "seasonal-weather-section"
3453
- }, ba = {
3454
- key: 0,
3455
- class: "card flex-space"
3456
- }, Ca = {
3457
- class: "echart-box",
3458
- style: {}
3459
- }, Ia = { style: { cursor: "pointer" } }, Ea = { style: { padding: "3px 0 0 5px", cursor: "pointer" } }, Qa = { class: "months-select-box" }, Ma = { class: "bg-select" }, ka = ["onClick"], La = { class: "flex-col-start-start right-bar" }, za = {
3460
- class: "",
3461
- style: { "font-size": "16px", "font-weight": "bold", "margin-bottom": "20px" }
3462
- }, Ha = { class: "text" }, Pa = { class: "text" }, Na = { class: "text" }, Ta = { class: "text" }, Ga = { class: "text" }, Sa = { class: "text" }, Fa = { class: "text" }, Oa = { class: "text" }, _a = { class: "text" }, Ya = { class: "text" }, ja = { class: "text" }, Ka = { class: "text" }, Ua = {
3463
- key: 1,
3464
- class: "card flex-center"
3465
- }, Ra = {
3466
- key: 2,
3467
- class: "card flex-center"
3468
- }, Wa = {
3469
- key: 0,
3470
- class: "info-box-item flex-start"
3471
- }, Xa = { class: "text" }, qa = { class: "info-box-item flex-start" }, Ja = { class: "text" }, Za = { class: "info-box-item flex-start" }, Va = {
3472
- key: 1,
3473
- class: "text"
3474
- }, $a = { class: "info-box-item flex-center" };
3475
- function ei(n, e, a, h, t, o) {
3476
- var _, Y, K, U, R, W, X, q, J, Z, V, w, S, T, P, u, G, M, k, D, re, le, ie, c, ve, E, z, F, pe, A, Ae, ne, ge, he, Ce, Be, de, ce, B, be, O, $, we, v;
3477
- const p = ze("ElOption"), f = ze("ElSelect"), I = ze("ElTooltip"), b = ze("Calendar"), x = ze("el-icon"), C = ze("ArrowRightBold"), Q = ze("ElIcon"), N = ze("el-date-picker"), ee = ze("ElInput"), te = ze("ElButton"), ae = ze("ElDialog");
3478
- return r(), l("div", Ct, [
3479
- s("div", It, [
3480
- s("div", Et, [
3481
- s("div", Qt, [
3482
- ke(f, {
3483
- modelValue: t.searchName,
3484
- "onUpdate:modelValue": e[0] || (e[0] = (i) => t.searchName = i),
3485
- filterable: "",
3486
- class: "input",
3487
- clearable: "",
3488
- remote: "",
3489
- placeholder: t.placeholder,
3490
- autocomplete: "",
3491
- "remote-show-suffix": "",
3492
- "remote-method": o.fetchSuggestPosition,
3493
- onFocus: o.handleSearchFocus,
3494
- onBlur: e[1] || (e[1] = (i) => t.placeholder = "search for port name or coordinates"),
3495
- onChange: o.handleSearch
3496
- }, {
3497
- default: Pe(() => [
3498
- (r(!0), l(ue, null, fe(t.positionList, (i) => (r(), Re(p, {
3499
- key: i.name,
3500
- label: i.nameRemark,
3501
- value: i.name
3502
- }, null, 8, ["label", "value"]))), 128))
3503
- ]),
3504
- _: 1
3505
- }, 8, ["modelValue", "placeholder", "remote-method", "onFocus", "onChange"]),
3506
- ke(f, {
3507
- modelValue: t.forecastModel,
3508
- "onUpdate:modelValue": e[2] || (e[2] = (i) => t.forecastModel = i),
3509
- filterable: "",
3510
- class: "input",
3511
- clearable: "",
3512
- placeholder: "Forecast Model",
3513
- style: { width: "150px", "margin-left": "10px" },
3514
- onChange: o.handleModelChange
3515
- }, {
3516
- default: Pe(() => [
3517
- (r(!0), l(ue, null, fe(t.modelList, (i) => (r(), Re(p, {
3518
- key: i,
3519
- label: i,
3520
- value: i
3521
- }, null, 8, ["label", "value"]))), 128))
3522
- ]),
3523
- _: 1
3524
- }, 8, ["modelValue", "onChange"])
3525
- ]),
3526
- s("div", Mt, [
3527
- s("div", {
3528
- class: ye(["item flex-center", t.menuIndex === 1 ? "active" : ""]),
3529
- onClick: e[3] || (e[3] = (i) => t.menuIndex = 1)
3530
- }, "History", 2),
3531
- s("div", {
3532
- class: ye(["item flex-center", t.menuIndex === 2 ? "active" : ""]),
3533
- onClick: e[4] || (e[4] = (i) => t.menuIndex = 2)
3534
- }, "7-Day Forecast", 2),
3535
- s("div", {
3536
- class: ye(["item flex-center", t.menuIndex === 3 ? "active" : ""]),
3537
- onClick: e[5] || (e[5] = (i) => t.menuIndex = 3)
3538
- }, "14-Day Forecast", 2),
3539
- s("div", {
3540
- class: ye(["item flex-center", t.menuIndex === 4 ? "active" : ""]),
3541
- onClick: e[6] || (e[6] = (i) => t.menuIndex = 4)
3542
- }, "Seasonal Forecast", 2)
3543
- ])
3544
- ])
3545
- ]),
3546
- s("div", kt, [
3547
- s("div", Lt, [
3548
- s("div", null, [
3549
- s("div", zt, m(t.menuIndex === 4 ? "Seasonal" : "") + " Weather forecast for " + m(((_ = t.position) == null ? void 0 : _.name) || "-") + " ( UTC" + m(t.positionOffset) + " )", 1),
3550
- s("div", Ht, [
3551
- se(" At " + m((Y = t.position) != null && Y.portId ? "port" : "coordinates"), 1),
3552
- (K = t.position) != null && K.portId ? (r(), l("span", Pt, ", " + m(o.computeLat(t.position.lat)) + ", " + m(o.computeLng(t.position.lng)), 1)) : Ne("", !0),
3553
- se(", issued " + m(t.issuedDate), 1)
3554
- ])
3555
- ]),
3556
- s("div", Nt, [
3557
- ke(I, {
3558
- placement: "left",
3559
- effect: "light",
3560
- content: t.followItem ? "Remove the Port/Coordinate from My Follows" : "Add the Port/Coordinate to My Follows",
3561
- "show-after": 1e3
3562
- }, {
3563
- default: Pe(() => [
3564
- t.followItem ? (r(), l("span", {
3565
- key: 0,
3566
- class: "iconfont icon active",
3567
- onClick: e[7] || (e[7] = (...i) => o.handleFollowDialogOpen && o.handleFollowDialogOpen(...i))
3568
- }, "")) : (r(), l("span", {
3569
- key: 1,
3570
- class: "iconfont icon",
3571
- onClick: e[8] || (e[8] = (...i) => o.handleFollowDialogOpen && o.handleFollowDialogOpen(...i))
3572
- }, ""))
3573
- ]),
3574
- _: 1
3575
- }, 8, ["content"])
3576
- ])
3577
- ]),
3578
- t.menuIndex === 1 || t.menuIndex === 2 || t.menuIndex === 3 ? (r(), l("div", Tt, [
3579
- (U = t.position) != null && U.name && a.token && !((R = t.loading) != null && R.meteogramEchart) ? (r(), l("div", Gt, [
3580
- s("div", St, [
3581
- e[15] || (e[15] = s("div", { style: { "margin-right": "20px" } }, "Meteogram", -1)),
3582
- Ze(s("div", {
3583
- id: "history-date-title",
3584
- class: "flex-space",
3585
- style: { cursor: "pointer" },
3586
- onClick: e[9] || (e[9] = (i) => t.meteoData.showDateSelect = !t.meteoData.showDateSelect)
3587
- }, [
3588
- ke(x, {
3589
- size: "16",
3590
- style: { "margin-right": "10px" }
3591
- }, {
3592
- default: Pe(() => [
3593
- ke(b)
3594
- ]),
3595
- _: 1
3596
- }),
3597
- s("span", Ft, m(o.computeMMMDDyyyyLT(t.dateRangeZ[0])) + " ~ " + m(o.computeMMMDDyyyyLT(t.dateRangeZ[1])), 1),
3598
- ke(Q, { size: "16" }, {
3599
- default: Pe(() => [
3600
- ke(C)
3601
- ]),
3602
- _: 1
3603
- })
3604
- ], 512), [
3605
- [Ve, t.menuIndex === 1]
3606
- ]),
3607
- Ze(s("div", Ot, [
3608
- ke(N, {
3609
- modelValue: t.dateRange,
3610
- "onUpdate:modelValue": e[10] || (e[10] = (i) => t.dateRange = i),
3611
- type: "daterange",
3612
- "range-separator": "~",
3613
- "start-placeholder": "Start date",
3614
- "end-placeholder": "End date",
3615
- shortcuts: t.datePickerOptions.shortcuts,
3616
- disabledDate: t.datePickerOptions.disabledDate,
3617
- onCalendarChange: o.handlePickDate,
3618
- onChange: o.handleDateRange
3619
- }, null, 8, ["modelValue", "shortcuts", "disabledDate", "onCalendarChange", "onChange"])
3620
- ], 512), [
3621
- [Ve, ((W = t.meteoData) == null ? void 0 : W.showDateSelect) && t.menuIndex === 1]
3622
- ])
3623
- ]),
3624
- e[16] || (e[16] = s("div", { id: "weather-icons" }, null, -1)),
3625
- e[17] || (e[17] = s("div", { id: "weather-condition" }, null, -1)),
3626
- e[18] || (e[18] = s("div", { id: "wave-swell" }, null, -1))
3627
- ])) : (X = t.loading) != null && X.meteogramEchart ? (r(), l("div", _t, e[19] || (e[19] = [
3628
- s("img", {
3629
- style: { height: "200px" },
3630
- src: Oe
3631
- }, null, -1)
3632
- ]))) : (r(), l("div", Yt, "No Data"))
3633
- ])) : Ne("", !0),
3634
- t.menuIndex === 2 ? (r(), l("div", jt, [
3635
- (q = t.position) != null && q.name && a.token && !((J = t.loading) != null && J.weatherEchart) ? (r(), l("div", Kt)) : (Z = t.loading) != null && Z.weatherEchart ? (r(), l("div", Ut, e[20] || (e[20] = [
3636
- s("img", {
3637
- style: { height: "200px" },
3638
- src: Oe
3639
- }, null, -1)
3640
- ]))) : (r(), l("div", Rt, "No Data"))
3641
- ])) : Ne("", !0),
3642
- t.menuIndex === 2 ? (r(), l("div", Wt, [
3643
- (V = t.position) != null && V.name && a.token && !((w = t.loading) != null && w.hoursTable) ? (r(), l("div", Xt, [
3644
- s("div", qt, m(t.pickedWeek) + " " + m(o.computeMMMDDLT(t.pickedDate)), 1),
3645
- s("table", Jt, [
3646
- s("tr", Zt, [
3647
- e[21] || (e[21] = s("th", {
3648
- rowspan: "1",
3649
- colspan: "1",
3650
- class: "td-title"
3651
- }, [
3652
- se("Local time"),
3653
- s("span", { class: "unit" }, "(LT)")
3654
- ], -1)),
3655
- (r(!0), l(ue, null, fe(t.hoursTableData.hours, (i, g) => (r(), l("th", {
3656
- key: `${i}${g}hoursLT`,
3657
- rowspan: "1",
3658
- colspan: "1",
3659
- class: ye(t.activeIndex === g ? "active" : "")
3660
- }, m(o.computeHourLT(i)), 3))), 128))
3661
- ]),
3662
- s("tr", Vt, [
3663
- e[22] || (e[22] = s("th", {
3664
- rowspan: "1",
3665
- colspan: "1",
3666
- class: "td-title"
3667
- }, [
3668
- se("UTC"),
3669
- s("span", { class: "unit" })
3670
- ], -1)),
3671
- (r(!0), l(ue, null, fe(t.hoursTableData.hours, (i, g) => (r(), l("th", {
3672
- key: `${i}${g}hoursLZ`,
3673
- rowspan: "1",
3674
- colspan: "1",
3675
- class: ye(t.activeIndex === g ? "active" : "")
3676
- }, m(o.computeHourZ(i)), 3))), 128))
3677
- ]),
3678
- s("tr", $t, [
3679
- e[23] || (e[23] = s("td", {
3680
- rowspan: "1",
3681
- colspan: "1",
3682
- class: "td-title"
3683
- }, [
3684
- se("Weather"),
3685
- s("span", { class: "unit" })
3686
- ], -1)),
3687
- (r(!0), l(ue, null, fe(t.hoursTableData.weatherUrls, (i, g) => (r(), l("td", {
3688
- key: `${i}${g}weatherUrls-weatherNames`,
3689
- rowspan: "1",
3690
- colspan: "1",
3691
- class: ye(t.activeIndex === g ? "active" : "")
3692
- }, [
3693
- ke(I, {
3694
- placement: "top",
3695
- effect: "light",
3696
- content: t.hoursTableData.weatherNames[g],
3697
- "show-after": 500
3698
- }, {
3699
- default: Pe(() => [
3700
- i ? (r(), l("img", {
3701
- key: 0,
3702
- class: "iconfont weather-icon",
3703
- src: i
3704
- }, null, 8, es)) : Ne("", !0)
3705
- ]),
3706
- _: 2
3707
- }, 1032, ["content"])
3708
- ], 2))), 128))
3709
- ]),
3710
- s("tr", ts, [
3711
- e[24] || (e[24] = s("td", {
3712
- rowspan: "1",
3713
- colspan: "1",
3714
- class: "td-title"
3715
- }, [
3716
- se("Temperature"),
3717
- s("span", { class: "unit" }, "°C")
3718
- ], -1)),
3719
- (r(!0), l(ue, null, fe(t.hoursTableData.temp, (i, g) => (r(), l("td", {
3720
- key: `${i}${g}temp`,
3721
- rowspan: "1",
3722
- colspan: "1",
3723
- class: ye(t.activeIndex === g ? "active" : "")
3724
- }, m(i), 3))), 128))
3725
- ]),
3726
- s("tr", ss, [
3727
- e[25] || (e[25] = s("td", {
3728
- rowspan: "1",
3729
- colspan: "1",
3730
- class: "td-title"
3731
- }, [
3732
- se("Precipitation Probability"),
3733
- s("span", { class: "unit" }, "%")
3734
- ], -1)),
3735
- (r(!0), l(ue, null, fe(t.hoursTableData.precipProbability, (i, g) => (r(), l("td", {
3736
- key: `${i}${g}precipProbability`,
3737
- rowspan: "1",
3738
- colspan: "1",
3739
- class: ye(t.activeIndex === g ? "active" : "")
3740
- }, m(i), 3))), 128))
3741
- ]),
3742
- s("tr", as, [
3743
- e[26] || (e[26] = s("td", {
3744
- rowspan: "1",
3745
- colspan: "1",
3746
- class: "td-title"
3747
- }, [
3748
- se("Precipitation 1h"),
3749
- s("span", { class: "unit" }, "mm")
3750
- ], -1)),
3751
- (r(!0), l(ue, null, fe(t.hoursTableData.precip1h, (i, g) => (r(), l("td", {
3752
- key: `${i}${g}precip1h`,
3753
- rowspan: "1",
3754
- colspan: "1",
3755
- class: ye(t.activeIndex === g ? "active" : "")
3756
- }, m(i), 3))), 128))
3757
- ]),
3758
- s("tr", is, [
3759
- e[27] || (e[27] = s("td", {
3760
- rowspan: "1",
3761
- colspan: "1",
3762
- class: "td-title"
3763
- }, [
3764
- se("Visibility"),
3765
- s("span", { class: "unit" }, "nm")
3766
- ], -1)),
3767
- (r(!0), l(ue, null, fe(t.hoursTableData.visibility, (i, g) => (r(), l("td", {
3768
- key: `${i}${g}visibility`,
3769
- rowspan: "1",
3770
- colspan: "1",
3771
- class: ye(t.activeIndex === g ? "active" : "")
3772
- }, m(i), 3))), 128))
3773
- ]),
3774
- s("tr", os, [
3775
- e[28] || (e[28] = s("td", {
3776
- rowspan: "1",
3777
- colspan: "1",
3778
- class: "td-title"
3779
- }, [
3780
- se("Relative Humidity"),
3781
- s("span", { class: "unit" }, "%")
3782
- ], -1)),
3783
- (r(!0), l(ue, null, fe(t.hoursTableData.humidity, (i, g) => (r(), l("td", {
3784
- key: `${i}${g}humidity`,
3785
- rowspan: "1",
3786
- colspan: "1",
3787
- class: ye(t.activeIndex === g ? "active" : "")
3788
- }, m(i), 3))), 128))
3789
- ]),
3790
- s("tr", ns, [
3791
- e[29] || (e[29] = s("td", {
3792
- rowspan: "1",
3793
- colspan: "1",
3794
- class: "td-title"
3795
- }, [
3796
- se("Wind direction"),
3797
- s("span", { class: "unit" })
3798
- ], -1)),
3799
- (r(!0), l(ue, null, fe(t.hoursTableData.windDir, (i, g) => (r(), l("td", {
3800
- key: `${i}${g}windDir`,
3801
- rowspan: "1",
3802
- colspan: "1",
3803
- class: ye(t.activeIndex === g ? "active" : "")
3804
- }, [
3805
- isNaN(i) ? (r(), l("span", rs, "-")) : (r(), l("span", {
3806
- key: 0,
3807
- class: "iconfont icon",
3808
- style: Le({ display: "inline-block", transform: `rotate(${i}deg)` })
3809
- }, "", 4))
3810
- ], 2))), 128))
3811
- ]),
3812
- s("tr", ls, [
3813
- e[30] || (e[30] = s("td", {
3814
- rowspan: "1",
3815
- colspan: "1",
3816
- class: "td-title"
3817
- }, [
3818
- se("Wind speed"),
3819
- s("span", { class: "unit" }, "kts")
3820
- ], -1)),
3821
- (r(!0), l(ue, null, fe(t.hoursTableData.windSpeed, (i, g) => (r(), l("td", {
3822
- key: `${i}${g}windSpeed`,
3823
- rowspan: "1",
3824
- colspan: "1",
3825
- class: ye(t.activeIndex === g ? "active" : "")
3826
- }, m(i), 3))), 128))
3827
- ]),
3828
- s("tr", As, [
3829
- e[31] || (e[31] = s("td", {
3830
- rowspan: "1",
3831
- colspan: "1",
3832
- class: "td-title"
3833
- }, [
3834
- se("Wind gust"),
3835
- s("span", { class: "unit" }, "kts")
3836
- ], -1)),
3837
- (r(!0), l(ue, null, fe(t.hoursTableData.windGust, (i, g) => (r(), l("td", {
3838
- key: `${i}${g}windGust`,
3839
- rowspan: "1",
3840
- colspan: "1",
3841
- class: ye(t.activeIndex === g ? "active" : "")
3842
- }, m(i), 3))), 128))
3843
- ])
3844
- ]),
3845
- e[43] || (e[43] = s("div", { style: { "text-align": "center", padding: "3px" } }, null, -1)),
3846
- s("table", hs, [
3847
- s("tr", ds, [
3848
- e[32] || (e[32] = s("td", {
3849
- rowspan: "1",
3850
- colspan: "1",
3851
- class: "td-title"
3852
- }, [
3853
- se("Wind wave height"),
3854
- s("span", { class: "unit" }, "m")
3855
- ], -1)),
3856
- (r(!0), l(ue, null, fe(t.hoursTableData.windwaveHeight, (i, g) => (r(), l("td", {
3857
- key: `${i}${g}windwaveHeight`,
3858
- rowspan: "1",
3859
- colspan: "1",
3860
- class: ye(t.activeIndex === g ? "active" : "")
3861
- }, m(i), 3))), 128))
3862
- ]),
3863
- s("tr", gs, [
3864
- e[33] || (e[33] = s("td", {
3865
- rowspan: "1",
3866
- colspan: "1",
3867
- class: "td-title"
3868
- }, [
3869
- se("Wind wave direction"),
3870
- s("span", { class: "unit" })
3871
- ], -1)),
3872
- (r(!0), l(ue, null, fe(t.hoursTableData.windwaveDir, (i, g) => (r(), l("td", {
3873
- key: `${i}${g}windwaveDir`,
3874
- rowspan: "1",
3875
- colspan: "1",
3876
- class: ye(t.activeIndex === g ? "active" : "")
3877
- }, [
3878
- isNaN(i) ? (r(), l("span", cs, "-")) : (r(), l("span", {
3879
- key: 0,
3880
- class: "iconfont icon",
3881
- style: Le({ display: "inline-block", transform: `rotate(${i}deg)` })
3882
- }, "", 4))
3883
- ], 2))), 128))
3884
- ]),
3885
- s("tr", ws, [
3886
- e[34] || (e[34] = s("td", {
3887
- rowspan: "1",
3888
- colspan: "1",
3889
- class: "td-title"
3890
- }, [
3891
- se("Wind wave period"),
3892
- s("span", { class: "unit" }, "s")
3893
- ], -1)),
3894
- (r(!0), l(ue, null, fe(t.hoursTableData.windwavePeriod, (i, g) => (r(), l("td", {
3895
- key: `${i}${g}windwavePeriod`,
3896
- rowspan: "1",
3897
- colspan: "1",
3898
- class: ye(t.activeIndex === g ? "active" : "")
3899
- }, m(i), 3))), 128))
3900
- ]),
3901
- s("tr", ms, [
3902
- e[35] || (e[35] = s("td", {
3903
- rowspan: "1",
3904
- colspan: "1",
3905
- class: "td-title"
3906
- }, [
3907
- se("Swell height"),
3908
- s("span", { class: "unit" }, "m")
3909
- ], -1)),
3910
- (r(!0), l(ue, null, fe(t.hoursTableData.swellHeight, (i, g) => (r(), l("td", {
3911
- key: `${i}${g}swellHeight`,
3912
- rowspan: "1",
3913
- colspan: "1",
3914
- class: ye(t.activeIndex === g ? "active" : "")
3915
- }, m(i), 3))), 128))
3916
- ]),
3917
- s("tr", ps, [
3918
- e[36] || (e[36] = s("td", {
3919
- rowspan: "1",
3920
- colspan: "1",
3921
- class: "td-title"
3922
- }, [
3923
- se("Swell direction"),
3924
- s("span", { class: "unit" })
3925
- ], -1)),
3926
- (r(!0), l(ue, null, fe(t.hoursTableData.swellDir, (i, g) => (r(), l("td", {
3927
- key: `${i}${g}swellDir`,
3928
- rowspan: "1",
3929
- colspan: "1",
3930
- class: ye(t.activeIndex === g ? "active" : "")
3931
- }, [
3932
- isNaN(i) ? (r(), l("span", us, "-")) : (r(), l("span", {
3933
- key: 0,
3934
- class: "iconfont icon",
3935
- style: Le({ display: "inline-block", transform: `rotate(${i}deg)` })
3936
- }, "", 4))
3937
- ], 2))), 128))
3938
- ]),
3939
- s("tr", fs, [
3940
- e[37] || (e[37] = s("td", {
3941
- rowspan: "1",
3942
- colspan: "1",
3943
- class: "td-title"
3944
- }, [
3945
- se("Swell period"),
3946
- s("span", { class: "unit" }, "s")
3947
- ], -1)),
3948
- (r(!0), l(ue, null, fe(t.hoursTableData.swellPeriod, (i, g) => (r(), l("td", {
3949
- key: `${i}${g}swellPeriod`,
3950
- rowspan: "1",
3951
- colspan: "1",
3952
- class: ye(t.activeIndex === g ? "active" : "")
3953
- }, m(i), 3))), 128))
3954
- ]),
3955
- s("tr", ys, [
3956
- e[38] || (e[38] = s("td", {
3957
- rowspan: "1",
3958
- colspan: "1",
3959
- class: "td-title"
3960
- }, [
3961
- se("Sig wave height"),
3962
- s("span", { class: "unit" }, "m")
3963
- ], -1)),
3964
- (r(!0), l(ue, null, fe(t.hoursTableData.sigwaveHeight, (i, g) => (r(), l("td", {
3965
- key: `${i}${g}sigwaveHeight`,
3966
- rowspan: "1",
3967
- colspan: "1",
3968
- class: ye(t.activeIndex === g ? "active" : "")
3969
- }, m(i), 3))), 128))
3970
- ]),
3971
- s("tr", vs, [
3972
- e[39] || (e[39] = s("td", {
3973
- rowspan: "1",
3974
- colspan: "1",
3975
- class: "td-title"
3976
- }, [
3977
- se("Current direction"),
3978
- s("span", { class: "unit" })
3979
- ], -1)),
3980
- (r(!0), l(ue, null, fe(t.hoursTableData.currentDir, (i, g) => (r(), l("td", {
3981
- key: `${i}${g}currentDir`,
3982
- rowspan: "1",
3983
- colspan: "1",
3984
- class: ye(t.activeIndex === g ? "active" : "")
3985
- }, [
3986
- isNaN(i) ? (r(), l("span", Ds, "-")) : (r(), l("span", {
3987
- key: 0,
3988
- class: "iconfont icon",
3989
- style: Le({ display: "inline-block", transform: `rotate(${i}deg)` })
3990
- }, "", 4))
3991
- ], 2))), 128))
3992
- ]),
3993
- s("tr", xs, [
3994
- e[40] || (e[40] = s("td", {
3995
- rowspan: "1",
3996
- colspan: "1",
3997
- class: "td-title"
3998
- }, [
3999
- se("Current speed"),
4000
- s("span", { class: "unit" }, "kts")
4001
- ], -1)),
4002
- (r(!0), l(ue, null, fe(t.hoursTableData.currentSpeed, (i, g) => (r(), l("td", {
4003
- key: `${i}${g}currentSpeed`,
4004
- rowspan: "1",
4005
- colspan: "1",
4006
- class: ye(t.activeIndex === g ? "active" : "")
4007
- }, m(i), 3))), 128))
4008
- ])
4009
- ]),
4010
- e[44] || (e[44] = s("div", { style: { "text-align": "center", padding: "3px" } }, null, -1)),
4011
- s("table", Bs, [
4012
- s("tr", bs, [
4013
- e[41] || (e[41] = s("td", {
4014
- rowspan: "1",
4015
- colspan: "1",
4016
- class: "td-title"
4017
- }, [
4018
- se("Sea level height"),
4019
- s("span", { class: "unit" }, "m")
4020
- ], -1)),
4021
- (r(!0), l(ue, null, fe(t.hoursTableData.seaLevel, (i, g) => (r(), l("td", {
4022
- key: `${i}${g}seaLevel`,
4023
- rowspan: "1",
4024
- colspan: "1",
4025
- class: ye(t.activeIndex === g ? "active" : "")
4026
- }, m(i), 3))), 128))
4027
- ]),
4028
- s("tr", Cs, [
4029
- e[42] || (e[42] = s("td", {
4030
- rowspan: "1",
4031
- colspan: "1",
4032
- class: "td-title"
4033
- }, [
4034
- se("Sea surface temperature"),
4035
- s("span", { class: "unit" }, "°C")
4036
- ], -1)),
4037
- (r(!0), l(ue, null, fe(t.hoursTableData.seaTemp, (i, g) => (r(), l("td", {
4038
- key: `${i}${g}seaTemp`,
4039
- rowspan: "1",
4040
- colspan: "1",
4041
- class: ye(t.activeIndex === g ? "active" : "")
4042
- }, m(i), 3))), 128))
4043
- ])
4044
- ])
4045
- ])) : (S = t.loading) != null && S.hoursTable ? (r(), l("div", Is, e[45] || (e[45] = [
4046
- s("img", {
4047
- style: { height: "200px" },
4048
- src: Oe
4049
- }, null, -1)
4050
- ]))) : (r(), l("div", Es, "No Data"))
4051
- ])) : Ne("", !0),
4052
- t.menuIndex === 3 ? (r(), l("div", Qs, [
4053
- (T = t.position) != null && T.name && a.token && !((P = t.loading) != null && P.daysTable) ? (r(), l("div", Ms, [
4054
- e[57] || (e[57] = s("div", { class: "date" }, "Daily Forecast", -1)),
4055
- s("table", ks, [
4056
- e[55] || (e[55] = s("tr", { class: "day tr-title" }, [
4057
- s("th", {
4058
- rowspan: "1",
4059
- colspan: "1"
4060
- }),
4061
- s("th", {
4062
- rowspan: "1",
4063
- colspan: "3",
4064
- class: "text-align-left"
4065
- }, "Conditions"),
4066
- s("th", {
4067
- rowspan: "1",
4068
- colspan: "3",
4069
- class: "text-align-left"
4070
- }, "Precipitation"),
4071
- s("th", {
4072
- rowspan: "1",
4073
- colspan: "2",
4074
- class: "text-align-left"
4075
- }, "Wind"),
4076
- s("th", {
4077
- rowspan: "1",
4078
- colspan: "4",
4079
- class: "text-align-left"
4080
- }, "Wave")
4081
- ], -1)),
4082
- e[56] || (e[56] = s("tr", { class: "hour tr-title border-bottom" }, [
4083
- s("th", {
4084
- rowspan: "1",
4085
- colspan: "1",
4086
- class: "font-black",
4087
- style: { "text-align": "right", "padding-right": "10px", "box-sizing": "border-box" }
4088
- }, "Date"),
4089
- s("th", {
4090
- rowspan: "1",
4091
- colspan: "1",
4092
- class: "font-black text-align-left",
4093
- style: { width: "40px" }
4094
- }, "Weather"),
4095
- s("th", {
4096
- rowspan: "1",
4097
- colspan: "1",
4098
- class: "font-black text-align-left",
4099
- style: { width: "70px" }
4100
- }),
4101
- s("th", {
4102
- rowspan: "1",
4103
- colspan: "1",
4104
- class: "font-black text-align-left"
4105
- }, "Temperature"),
4106
- s("th", {
4107
- rowspan: "1",
4108
- colspan: "1",
4109
- class: "font-black text-align-left"
4110
- }, "Sum"),
4111
- s("th", {
4112
- rowspan: "1",
4113
- colspan: "1",
4114
- class: "font-black text-align-left"
4115
- }, "Rain"),
4116
- s("th", {
4117
- rowspan: "1",
4118
- colspan: "1",
4119
- class: "font-black text-align-left"
4120
- }, "Snowfall"),
4121
- s("th", {
4122
- rowspan: "1",
4123
- colspan: "1",
4124
- class: "font-black text-align-left"
4125
- }, "Speed_max"),
4126
- s("th", {
4127
- rowspan: "1",
4128
- colspan: "1",
4129
- class: "font-black text-align-left"
4130
- }, "Gust_max"),
4131
- s("th", {
4132
- rowspan: "1",
4133
- colspan: "1",
4134
- class: "font-black text-align-left",
4135
- style: { width: "75px" }
4136
- }, "Wind wave_max"),
4137
- s("th", {
4138
- rowspan: "1",
4139
- colspan: "1",
4140
- class: "font-black text-align-left",
4141
- style: { width: "75px" }
4142
- }, "Swell wave_max"),
4143
- s("th", {
4144
- rowspan: "1",
4145
- colspan: "1",
4146
- class: "font-black text-align-left",
4147
- style: { width: "75px" }
4148
- }, "Sig.wave_max")
4149
- ], -1)),
4150
- (r(!0), l(ue, null, fe(t.daysTableData, (i) => (r(), l("tr", {
4151
- key: Math.random() + i.localDate,
4152
- class: "text border-bottom"
4153
- }, [
4154
- s("td", Ls, [
4155
- s("div", null, m(i.localWeek), 1),
4156
- s("div", null, m(i.localDate), 1)
4157
- ]),
4158
- s("td", zs, [
4159
- i.weatherUrl ? (r(), l("img", {
4160
- key: 0,
4161
- class: "iconfont weather-icon",
4162
- style: { width: "34px", height: "34px" },
4163
- src: i.weatherUrl
4164
- }, null, 8, Hs)) : Ne("", !0)
4165
- ]),
4166
- s("td", Ps, m(i.weatherName), 1),
4167
- s("td", Ns, [
4168
- se(m(i.minTemp) + " / " + m(i.maxTemp), 1),
4169
- e[46] || (e[46] = s("span", { class: "unit" }, "°C", -1))
4170
- ]),
4171
- s("td", Ts, [
4172
- se(m(i.precipSum), 1),
4173
- e[47] || (e[47] = s("span", { class: "unit" }, "mm", -1))
4174
- ]),
4175
- s("td", Gs, [
4176
- se(m(i.precipRainSum), 1),
4177
- e[48] || (e[48] = s("span", { class: "unit" }, "mm", -1))
4178
- ]),
4179
- s("td", Ss, [
4180
- se(m(i.precipSnowfallSum), 1),
4181
- e[49] || (e[49] = s("span", { class: "unit" }, "mm", -1))
4182
- ]),
4183
- s("td", Fs, [
4184
- s("span", null, m(i.windSpeedMax), 1),
4185
- e[50] || (e[50] = s("span", { class: "unit" }, "kts", -1)),
4186
- !isNaN(i.windSpeedDir) && !isNaN(i.windSpeedMax) ? (r(), l("span", {
4187
- key: 0,
4188
- class: "iconfont icon",
4189
- style: Le({ display: "inline-block", transform: `rotate(${i.windSpeedDir}deg)` })
4190
- }, "", 4)) : (r(), l("span", Os, "-"))
4191
- ]),
4192
- s("td", _s, [
4193
- s("span", null, m(i.gustSpeedMax), 1),
4194
- e[51] || (e[51] = s("span", { class: "unit" }, "kts", -1))
4195
- ]),
4196
- s("td", Ys, [
4197
- s("span", null, m(i.windWaveHeight), 1),
4198
- e[52] || (e[52] = s("span", { class: "unit" }, "m", -1)),
4199
- !isNaN(i.windWaveDir) && !isNaN(i.windWaveHeight) ? (r(), l("span", {
4200
- key: 0,
4201
- class: "iconfont icon",
4202
- style: Le({ display: "inline-block", transform: `rotate(${i.windWaveDir}deg)` })
4203
- }, "", 4)) : (r(), l("span", js, "-"))
4204
- ]),
4205
- s("td", Ks, [
4206
- s("span", null, m(i.swellWaveHeight), 1),
4207
- e[53] || (e[53] = s("span", { class: "unit" }, "m", -1)),
4208
- !isNaN(i.swellWaveDir) && !isNaN(i.swellWaveHeight) ? (r(), l("span", {
4209
- key: 0,
4210
- class: "iconfont icon",
4211
- style: Le({ display: "inline-block", transform: `rotate(${i.swellWaveDir}deg)` })
4212
- }, "", 4)) : (r(), l("span", Us, "-"))
4213
- ]),
4214
- s("td", Rs, [
4215
- s("span", null, m(i.sigWaveHeight), 1),
4216
- e[54] || (e[54] = s("span", { class: "unit" }, "m", -1)),
4217
- !isNaN(i.sigWaveDir) && !isNaN(i.sigWaveHeight) ? (r(), l("span", {
4218
- key: 0,
4219
- class: "iconfont icon",
4220
- style: Le({ display: "inline-block", transform: `rotate(${i.sigWaveDir}deg)` })
4221
- }, "", 4)) : (r(), l("span", Ws, "-"))
4222
- ])
4223
- ]))), 128))
4224
- ])
4225
- ])) : (u = t.loading) != null && u.daysTable ? (r(), l("div", Xs, e[58] || (e[58] = [
4226
- s("img", {
4227
- style: { height: "200px" },
4228
- src: Oe
4229
- }, null, -1)
4230
- ]))) : (r(), l("div", qs, "No Data"))
4231
- ])) : Ne("", !0),
4232
- t.menuIndex === 1 || t.menuIndex === 3 ? (r(), l("div", Js, [
4233
- (G = t.position) != null && G.name && a.token && !((M = t.loading) != null && M.hourlyTable) ? (r(), l("div", Zs, [
4234
- e[61] || (e[61] = s("div", { class: "date" }, "Hourly Forecast", -1)),
4235
- s("table", Vs, [
4236
- e[59] || (e[59] = s("tr", { class: "day tr-title" }, [
4237
- s("th", {
4238
- rowspan: "2",
4239
- colspan: "1",
4240
- class: "border",
4241
- style: { width: "70px" }
4242
- }, "DateTime"),
4243
- s("th", {
4244
- rowspan: "1",
4245
- colspan: "1",
4246
- class: "border"
4247
- }, "Temp"),
4248
- s("th", {
4249
- rowspan: "1",
4250
- colspan: "1",
4251
- class: "border"
4252
- }, "Precip.3h"),
4253
- s("th", {
4254
- rowspan: "1",
4255
- colspan: "1",
4256
- class: "border"
4257
- }, "Visibility"),
4258
- s("th", {
4259
- rowspan: "1",
4260
- colspan: "4",
4261
- class: "border"
4262
- }, "Wind"),
4263
- s("th", {
4264
- rowspan: "1",
4265
- colspan: "3",
4266
- class: "border"
4267
- }, "Wind wave"),
4268
- s("th", {
4269
- rowspan: "1",
4270
- colspan: "3",
4271
- class: "border"
4272
- }, "Sig.wave"),
4273
- s("th", {
4274
- rowspan: "1",
4275
- colspan: "2",
4276
- class: "border"
4277
- }, "Current"),
4278
- s("th", {
4279
- rowspan: "1",
4280
- colspan: "1",
4281
- class: "border"
4282
- }, "Sea Level"),
4283
- s("th", {
4284
- rowspan: "1",
4285
- colspan: "1",
4286
- class: "border"
4287
- }, "Sea Surface")
4288
- ], -1)),
4289
- e[60] || (e[60] = s("tr", { class: "hour tr-title" }, [
4290
- s("th", {
4291
- rowspan: "1",
4292
- colspan: "1",
4293
- class: "border"
4294
- }, "°C"),
4295
- s("th", {
4296
- rowspan: "1",
4297
- colspan: "1",
4298
- class: "border",
4299
- style: { width: "60px" }
4300
- }, "Acc (mm)"),
4301
- s("th", {
4302
- rowspan: "1",
4303
- colspan: "1",
4304
- class: "border"
4305
- }, "Dist (nm)"),
4306
- s("th", {
4307
- rowspan: "1",
4308
- colspan: "1",
4309
- class: "border"
4310
- }, "Dir"),
4311
- s("th", {
4312
- rowspan: "1",
4313
- colspan: "1",
4314
- class: "border"
4315
- }, "Spd(kts)"),
4316
- s("th", {
4317
- rowspan: "1",
4318
- colspan: "1",
4319
- class: "border"
4320
- }, "BF"),
4321
- s("th", {
4322
- rowspan: "1",
4323
- colspan: "1",
4324
- class: "border"
4325
- }, "Gusts(kts)"),
4326
- s("th", {
4327
- rowspan: "1",
4328
- colspan: "1",
4329
- class: "border"
4330
- }, "Dir"),
4331
- s("th", {
4332
- rowspan: "1",
4333
- colspan: "1",
4334
- class: "border"
4335
- }, "Hgt(m)"),
4336
- s("th", {
4337
- rowspan: "1",
4338
- colspan: "1",
4339
- class: "border"
4340
- }, "Prd(s)"),
4341
- s("th", {
4342
- rowspan: "1",
4343
- colspan: "1",
4344
- class: "border"
4345
- }, "Dir"),
4346
- s("th", {
4347
- rowspan: "1",
4348
- colspan: "1",
4349
- class: "border"
4350
- }, "Hgt(m)"),
4351
- s("th", {
4352
- rowspan: "1",
4353
- colspan: "1",
4354
- class: "border"
4355
- }, "Prd(s)"),
4356
- s("th", {
4357
- rowspan: "1",
4358
- colspan: "1",
4359
- class: "border"
4360
- }, "Dir"),
4361
- s("th", {
4362
- rowspan: "1",
4363
- colspan: "1",
4364
- class: "border"
4365
- }, "Spd(kts)"),
4366
- s("th", {
4367
- rowspan: "1",
4368
- colspan: "1",
4369
- class: "border"
4370
- }, "Hgt(m)"),
4371
- s("th", {
4372
- rowspan: "1",
4373
- colspan: "1",
4374
- class: "border"
4375
- }, "Temp(°C)")
4376
- ], -1)),
4377
- (r(!0), l(ue, null, fe(t.hourlyTableData, (i) => (r(), l("tr", {
4378
- key: Math.random() + i.localDate,
4379
- class: "text border-bottom"
4380
- }, [
4381
- s("td", $s, [
4382
- s("div", null, m(i.localDate), 1)
4383
- ]),
4384
- s("td", ea, [
4385
- s("div", null, m(i.temp), 1)
4386
- ]),
4387
- s("td", ta, m(i.precipSum), 1),
4388
- s("td", sa, m(i.visibility), 1),
4389
- s("td", aa, [
4390
- se(m(i.windDir) + " ", 1),
4391
- !isNaN(i.windBearing) && i.windDir ? (r(), l("span", {
4392
- key: 0,
4393
- class: "iconfont icon",
4394
- style: Le({ display: "inline-block", transform: `rotate(${i.windBearing}deg)` })
4395
- }, "", 4)) : (r(), l("span", ia, "-"))
4396
- ]),
4397
- s("td", oa, m(i.windSpeed), 1),
4398
- s("td", na, m(i.windBF), 1),
4399
- s("td", ra, m(i.windGusts), 1),
4400
- s("td", la, [
4401
- se(m(i.windWaveDir) + " ", 1),
4402
- !isNaN(i.windWaveBearing) && i.windWaveDir ? (r(), l("span", {
4403
- key: 0,
4404
- class: "iconfont icon",
4405
- style: Le({ display: "inline-block", transform: `rotate(${i.windWaveBearing}deg)` })
4406
- }, "", 4)) : (r(), l("span", Aa, "-"))
4407
- ]),
4408
- s("td", ha, m(i.windWaveHeight), 1),
4409
- s("td", da, m(i.windWavePeriod), 1),
4410
- s("td", ga, [
4411
- se(m(i.sigWaveDir) + " ", 1),
4412
- !isNaN(i.sigWaveBearing) && i.sigWaveDir ? (r(), l("span", {
4413
- key: 0,
4414
- class: "iconfont icon",
4415
- style: Le({ display: "inline-block", transform: `rotate(${i.sigWaveBearing}deg)` })
4416
- }, "", 4)) : (r(), l("span", ca, "-"))
4417
- ]),
4418
- s("td", wa, m(i.sigWaveHeight), 1),
4419
- s("td", ma, m(i.sigWavePeriod), 1),
4420
- s("td", pa, [
4421
- se(m(i.currentDir) + " ", 1),
4422
- !isNaN(i.currentBearing) && i.currentDir ? (r(), l("span", {
4423
- key: 0,
4424
- class: "iconfont icon",
4425
- style: Le({ display: "inline-block", transform: `rotate(${i.currentBearing}deg)` })
4426
- }, "", 4)) : (r(), l("span", ua, "-"))
4427
- ]),
4428
- s("td", fa, m(i.currentSpd), 1),
4429
- s("td", ya, m(i.seaLevel), 1),
4430
- s("td", va, m(i.seaSurfaceTemp), 1)
4431
- ]))), 128))
4432
- ])
4433
- ])) : (k = t.loading) != null && k.hourlyTable ? (r(), l("div", Da, e[62] || (e[62] = [
4434
- s("img", {
4435
- style: { height: "200px" },
4436
- src: Oe
4437
- }, null, -1)
4438
- ]))) : (r(), l("div", xa, "No Data"))
4439
- ])) : Ne("", !0),
4440
- t.menuIndex === 4 ? (r(), l("div", Ba, [
4441
- (D = t.position) != null && D.name && a.token && !((re = t.loading) != null && re.seasonalEchart) ? (r(), l("div", ba, [
4442
- s("div", Ca, [
4443
- s("div", {
4444
- id: "seasonal-title",
4445
- class: "title flex-start",
4446
- onClick: e[11] || (e[11] = (i) => t.seasonalData.showMonths = !t.seasonalData.showMonths)
4447
- }, [
4448
- s("div", Ia, m((c = (ie = (le = t.currentMonth) == null ? void 0 : le.month) == null ? void 0 : ie.split("-")) == null ? void 0 : c[0]) + " " + m((z = (E = (ve = t.currentMonth) == null ? void 0 : ve.month) == null ? void 0 : E.split("-")) == null ? void 0 : z[1]), 1),
4449
- s("div", Ea, [
4450
- ke(Q, null, {
4451
- default: Pe(() => [
4452
- ke(C)
4453
- ]),
4454
- _: 1
4455
- })
4456
- ]),
4457
- Ze(s("div", Qa, [
4458
- s("div", Ma, [
4459
- (r(!0), l(ue, null, fe(t.monthsOptions, (i) => {
4460
- var g;
4461
- return r(), l("div", {
4462
- key: i,
4463
- class: ye(["month-option", ((g = t.currentMonth) == null ? void 0 : g.month) === i.month ? "active" : ""]),
4464
- onClick: (me) => o.handleSelectMonth(i)
4465
- }, m(i.month), 11, ka);
4466
- }), 128))
4467
- ])
4468
- ], 512), [
4469
- [Ve, t.seasonalData.showMonths]
4470
- ])
4471
- ]),
4472
- e[63] || (e[63] = s("div", { id: "temperature-echart" }, null, -1)),
4473
- e[64] || (e[64] = s("div", { id: "wind-precip-echart" }, null, -1))
4474
- ]),
4475
- s("div", La, [
4476
- s("div", za, m((F = t.currentMonth) == null ? void 0 : F.month) + " Summary", 1),
4477
- e[65] || (e[65] = s("div", { class: "label" }, "Temperature", -1)),
4478
- s("div", Ha, "Avg High Temp: " + m(t.seasonalData.minHighTemp) + " to " + m(t.seasonalData.maxHighTemp) + " °C", 1),
4479
- s("div", Pa, "Avg Low Temp: " + m(t.seasonalData.minLowTemp) + " to " + m(t.seasonalData.maxLowTemp) + " °C", 1),
4480
- s("div", Na, "Hottest Day: " + m(t.seasonalData.hottestDay), 1),
4481
- s("div", Ta, "Coldest Day: " + m(t.seasonalData.coldestDay), 1),
4482
- e[66] || (e[66] = s("div", { class: "label" }, "Precipitation", -1)),
4483
- s("div", Ga, "Light (<10mm): " + m((Ae = (A = (pe = t.seasonalData) == null ? void 0 : pe.precip) == null ? void 0 : A.filter((i) => i < 10)) == null ? void 0 : Ae.length) + " days", 1),
4484
- s("div", Sa, "Moderate (<=24.9mm): " + m((he = (ge = (ne = t.seasonalData) == null ? void 0 : ne.precip) == null ? void 0 : ge.filter((i) => i >= 10 && i < 24.9)) == null ? void 0 : he.length) + " days", 1),
4485
- s("div", Fa, "Heavy (<=49.9mm): " + m((de = (Be = (Ce = t.seasonalData) == null ? void 0 : Ce.precip) == null ? void 0 : Be.filter((i) => i >= 24.9 && i < 49.9)) == null ? void 0 : de.length) + " days", 1),
4486
- s("div", Oa, "Rainstorm (<=99.9mm): " + m((be = (B = (ce = t.seasonalData) == null ? void 0 : ce.precip) == null ? void 0 : B.filter((i) => i >= 49.9 && i < 99.9)) == null ? void 0 : be.length) + " days", 1),
4487
- s("div", _a, "Heavy Rainstorm (>=100mm): " + m((we = ($ = (O = t.seasonalData) == null ? void 0 : O.precip) == null ? void 0 : $.filter((i) => i >= 100)) == null ? void 0 : we.length) + " days", 1),
4488
- e[67] || (e[67] = s("div", { class: "label" }, "Wind", -1)),
4489
- s("div", Ya, "Mean Wind: " + m(o.roundPrecision(t.seasonalData.meanWind, 1)) + " kts", 1),
4490
- s("div", ja, "Windiest Day: " + m(t.seasonalData.windiestDay) + " ( " + m(t.seasonalData.maxWindSpeed) + "kts )", 1),
4491
- s("div", Ka, "Dominant Wind Dir: " + m(t.seasonalData.dominantWind), 1)
4492
- ])
4493
- ])) : (v = t.loading) != null && v.seasonalEchart ? (r(), l("div", Ua, e[68] || (e[68] = [
4494
- s("img", {
4495
- style: { height: "200px" },
4496
- src: Oe
4497
- }, null, -1)
4498
- ]))) : (r(), l("div", Ra, "No Data"))
4499
- ])) : Ne("", !0)
4500
- ]),
4501
- ke(ae, {
4502
- modelValue: t.showFollowDialog,
4503
- "onUpdate:modelValue": e[14] || (e[14] = (i) => t.showFollowDialog = i),
4504
- title: t.followDialogTitle,
4505
- modal: !1,
4506
- width: "440",
4507
- draggable: !0,
4508
- "show-close": !1,
4509
- class: "follow-dialog",
4510
- "close-on-click-modal": !1
4511
- }, {
4512
- default: Pe(() => [
4513
- s("div", null, [
4514
- s("div", {
4515
- class: "iconfont close-btn",
4516
- onClick: e[12] || (e[12] = (i) => t.showFollowDialog = !1)
4517
- }, ""),
4518
- t.position.portId ? (r(), l("div", Wa, [
4519
- e[69] || (e[69] = s("span", { class: "label" }, "Port:", -1)),
4520
- s("span", Xa, m(t.position.name), 1)
4521
- ])) : Ne("", !0),
4522
- s("div", qa, [
4523
- e[70] || (e[70] = s("span", { class: "label" }, "Postion:", -1)),
4524
- s("span", Ja, m(this.computeLat(this.position.lat) + ", " + this.computeLng(this.position.lng)), 1)
4525
- ]),
4526
- s("div", Za, [
4527
- e[71] || (e[71] = s("span", { class: "label" }, "Remark:", -1)),
4528
- t.followItem ? (r(), l("span", Va, m(t.position.remark || "-"), 1)) : (r(), Re(ee, {
4529
- key: 0,
4530
- modelValue: t.followRemark,
4531
- "onUpdate:modelValue": e[13] || (e[13] = (i) => t.followRemark = i),
4532
- class: "text"
4533
- }, null, 8, ["modelValue"]))
4534
- ]),
4535
- s("div", $a, [
4536
- t.followItem ? (r(), Re(te, {
4537
- key: 0,
4538
- type: "info",
4539
- plain: "",
4540
- onClick: o.handleClickFollow
4541
- }, {
4542
- default: Pe(() => e[72] || (e[72] = [
4543
- se("Remove")
4544
- ])),
4545
- _: 1
4546
- }, 8, ["onClick"])) : (r(), Re(te, {
4547
- key: 1,
4548
- type: "primary",
4549
- onClick: o.handleClickFollow
4550
- }, {
4551
- default: Pe(() => e[73] || (e[73] = [
4552
- se("Confirm")
4553
- ])),
4554
- _: 1
4555
- }, 8, ["onClick"]))
4556
- ])
4557
- ])
4558
- ]),
4559
- _: 1
4560
- }, 8, ["modelValue", "title"])
4561
- ]);
4562
- }
4563
- const ti = /* @__PURE__ */ Bt(bt, [["render", ei], ["__scopeId", "data-v-65cb2242"]]), li = {
4564
- install(n) {
4565
- n.component("SpotReport", ti);
4566
- }
4567
- };
1
+ import { c as s, b as g, a as h, S as l } from "./index-c9746e15.js";
2
+ import "moment";
3
+ import "moment-timezone";
4
+ import "@element-plus/icons-vue";
5
+ import "@idm-plugin/geo";
6
+ import "vue";
7
+ import "echarts";
8
+ import "axios";
4568
9
  export {
4569
- ti as SpotReport,
4570
- li as SpotReportPlugin
10
+ s as SpotReport,
11
+ g as SpotReportPlugin,
12
+ h as SpotWeather,
13
+ l as SpotWeatherPlugin
4571
14
  };