@fmidev/smartmet-alert-client 4.2.7 → 4.7.0-alpha.0
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/.eslintignore +2 -14
- package/.github/workflows/test.yaml +26 -0
- package/.nvmrc +1 -0
- package/dist/index.dark.html +1 -1
- package/dist/index.en.html +1 -1
- package/dist/index.fi.html +1 -1
- package/dist/index.html +5 -0
- package/dist/index.js +105 -135
- package/dist/index.mjs +112 -135
- package/dist/index.sv.html +1 -1
- package/dist/locale-en-DCEKDw5G.js +8 -0
- package/dist/locale-fi-DPiOM1rB.js +8 -0
- package/dist/locale-sv-B0FlbgEF.js +8 -0
- package/dist/vendor-Cfkkvdz7.js +21 -0
- package/dist/vue/index.mjs +15245 -0
- package/dist/vue/style.css +1 -0
- package/dist/xml-parser-BiNO9kc-.js +13 -0
- package/package.json +61 -25
- package/public/index.dark.html +1 -1
- package/public/index.en.html +1 -1
- package/public/index.fi.html +1 -1
- package/public/index.sv.html +1 -1
- package/src/AlertClientVue.vue +170 -0
- package/src/App.vue +58 -176
- package/src/assets/img/ui/arrow-down.svg +4 -14
- package/src/assets/img/ui/arrow-up.svg +4 -14
- package/src/assets/img/ui/clear.svg +7 -21
- package/src/assets/img/ui/close.svg +4 -15
- package/src/assets/img/ui/toggle-selected.svg +12 -0
- package/src/assets/img/ui/toggle-unselected.svg +12 -0
- package/src/assets/img/warning/cold-weather.svg +3 -6
- package/src/assets/img/warning/flood-level-3.svg +4 -7
- package/src/assets/img/warning/forest-fire-weather.svg +2 -6
- package/src/assets/img/warning/grass-fire-weather.svg +2 -6
- package/src/assets/img/warning/hot-weather.svg +3 -6
- package/src/assets/img/warning/pedestrian-safety.svg +3 -7
- package/src/assets/img/warning/rain.svg +2 -7
- package/src/assets/img/warning/sea-icing.svg +2 -6
- package/src/assets/img/warning/sea-thunder-storm.svg +2 -5
- package/src/assets/img/warning/sea-water-height-high-water.svg +3 -8
- package/src/assets/img/warning/sea-water-height-shallow-water.svg +3 -7
- package/src/assets/img/warning/sea-wave-height.svg +4 -7
- package/src/assets/img/warning/sea-wind-legend.svg +2 -5
- package/src/assets/img/warning/sea-wind.svg +2 -5
- package/src/assets/img/warning/several.svg +2 -5
- package/src/assets/img/warning/thunder-storm.svg +2 -5
- package/src/assets/img/warning/traffic-weather.svg +2 -6
- package/src/assets/img/warning/uv-note.svg +2 -6
- package/src/assets/img/warning/wind.svg +2 -5
- package/src/components/AlertClient.vue +42 -20
- package/src/components/CollapsiblePanel.vue +284 -0
- package/src/components/DayLarge.vue +40 -32
- package/src/components/DaySmall.vue +17 -7
- package/src/components/Days.vue +77 -52
- package/src/components/DescriptionWarning.vue +26 -8
- package/src/components/GrayScaleToggle.vue +42 -35
- package/src/components/Legend.vue +36 -240
- package/src/components/MapLarge.vue +55 -50
- package/src/components/MapSmall.vue +48 -29
- package/src/components/PopupRow.vue +6 -3
- package/src/components/Region.vue +162 -53
- package/src/components/RegionWarning.vue +33 -11
- package/src/components/Regions.vue +59 -29
- package/src/components/Warning.vue +53 -49
- package/src/components/Warnings.vue +54 -16
- package/src/locales/en.json +21 -4
- package/src/locales/fi.json +23 -6
- package/src/locales/sv.json +20 -3
- package/src/main.js +1 -0
- package/src/mixins/alertClientCore.js +210 -0
- package/src/mixins/config.js +263 -257
- package/src/mixins/utils.js +46 -15
- package/src/plugins/index.js +1 -1
- package/src/scss/_utilities.scss +193 -0
- package/src/scss/backgrounds.scss +2 -0
- package/src/scss/colors.scss +5 -3
- package/src/scss/constants.scss +3 -2
- package/src/scss/themes/dark-gray.scss +3 -3
- package/src/scss/themes/dark.scss +1 -1
- package/src/scss/themes/light-gray.scss +5 -5
- package/src/scss/themes/light.scss +3 -3
- package/src/scss/warningImages.scss +9 -5
- package/src/vue.js +41 -0
- package/svgo.config.js +45 -0
- package/tests/README.md +430 -0
- package/tests/fixtures/mockWarningData.js +135 -0
- package/tests/integration/warning-flow.spec.js +452 -0
- package/tests/setup.js +41 -0
- package/tests/unit/components/AlertClient.spec.js +734 -0
- package/tests/unit/components/DayLarge.spec.js +281 -0
- package/tests/unit/components/DaySmall.spec.js +278 -0
- package/tests/unit/components/Days.spec.js +565 -0
- package/tests/unit/components/DescriptionWarning.spec.js +432 -0
- package/tests/unit/components/GrayScaleToggle.spec.js +311 -0
- package/tests/unit/components/Legend.spec.js +223 -0
- package/tests/unit/components/MapLarge.spec.js +276 -0
- package/tests/unit/components/MapSmall.spec.js +226 -0
- package/tests/unit/components/PopupRow.spec.js +261 -0
- package/tests/unit/components/Region.spec.js +430 -0
- package/tests/unit/components/RegionWarning.snapshot.spec.js +73 -0
- package/tests/unit/components/RegionWarning.spec.js +408 -0
- package/tests/unit/components/Regions.spec.js +335 -0
- package/tests/unit/components/Warning.snapshot.spec.js +107 -0
- package/tests/unit/components/Warning.spec.js +472 -0
- package/tests/unit/components/Warnings.spec.js +329 -0
- package/tests/unit/components/__snapshots__/RegionWarning.snapshot.spec.js.snap +21 -0
- package/tests/unit/components/__snapshots__/Warning.snapshot.spec.js.snap +199 -0
- package/tests/unit/mixins/config.spec.js +269 -0
- package/tests/unit/mixins/i18n.spec.js +115 -0
- package/tests/unit/mixins/keycodes.spec.js +37 -0
- package/tests/unit/mixins/utils.spec.js +624 -0
- package/vite.config.js +96 -26
- package/vitest.config.js +40 -0
- package/dist/index.mjs.map +0 -1
- package/dist/index.relative.html +0 -19
- package/dist/index.start.html +0 -20
- package/playwright.config.ts +0 -18
- package/public/index.relative.html +0 -19
- package/public/index.start.html +0 -20
- package/src/assets/img/ui/toggle-selected-blue.svg +0 -4
- package/src/assets/img/ui/toggle-selected-dark.svg +0 -4
- package/src/assets/img/ui/toggle-selected-light.svg +0 -4
- package/src/assets/img/ui/toggle-unselected-dark.svg +0 -4
- package/src/assets/img/ui/toggle-unselected-light.svg +0 -4
- package/src/mixins/panzoom.js +0 -900
- package/test/snapshot.test.ts +0 -126
- package/vitest.config.ts +0 -6
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<AlertClient
|
|
3
|
+
v-if="visible"
|
|
4
|
+
:refresh-interval="refreshIntervalNormalized"
|
|
5
|
+
:default-day="selectedDayNormalized"
|
|
6
|
+
:static-days="staticDaysNormalized"
|
|
7
|
+
:start-from="startFrom"
|
|
8
|
+
:region-list-enabled="regionListEnabledNormalized"
|
|
9
|
+
:gray-scale-selector="grayScaleSelectorNormalized"
|
|
10
|
+
:current-time="currentTime"
|
|
11
|
+
:warnings-data="warningsData"
|
|
12
|
+
:daily-warning-types="dailyWarningTypesNormalized"
|
|
13
|
+
:geometry-id="geometryIdNormalized"
|
|
14
|
+
:language="language"
|
|
15
|
+
:theme="themeClass"
|
|
16
|
+
:sleep="sleepNormalized"
|
|
17
|
+
:loading="loading"
|
|
18
|
+
:spinner-enabled="spinnerEnabledNormalized"
|
|
19
|
+
@loaded="onLoaded"
|
|
20
|
+
@theme-changed="onThemeChanged"
|
|
21
|
+
@update-warnings="fetchWarnings" />
|
|
22
|
+
</template>
|
|
23
|
+
<script>
|
|
24
|
+
/**
|
|
25
|
+
* Vue wrapper component for AlertClient.
|
|
26
|
+
* Accepts native JavaScript types (Number, Boolean) unlike the web component
|
|
27
|
+
* version which only accepts strings.
|
|
28
|
+
*/
|
|
29
|
+
import AlertClient from './components/AlertClient.vue'
|
|
30
|
+
import alertClientCore, { toBool, toNum } from './mixins/alertClientCore'
|
|
31
|
+
import config from './mixins/config'
|
|
32
|
+
import utils from './mixins/utils'
|
|
33
|
+
|
|
34
|
+
export default {
|
|
35
|
+
name: 'AlertClientVue',
|
|
36
|
+
components: {
|
|
37
|
+
AlertClient,
|
|
38
|
+
},
|
|
39
|
+
mixins: [config, utils, alertClientCore],
|
|
40
|
+
props: {
|
|
41
|
+
currentDate: {
|
|
42
|
+
type: [String, Date],
|
|
43
|
+
default: null,
|
|
44
|
+
},
|
|
45
|
+
baseUrl: {
|
|
46
|
+
type: String,
|
|
47
|
+
default: 'https://www.ilmatieteenlaitos.fi/geoserver/alert/ows',
|
|
48
|
+
},
|
|
49
|
+
selectedDay: {
|
|
50
|
+
type: [String, Number],
|
|
51
|
+
default: 0,
|
|
52
|
+
},
|
|
53
|
+
regionListEnabled: {
|
|
54
|
+
type: [String, Boolean],
|
|
55
|
+
default: true,
|
|
56
|
+
},
|
|
57
|
+
spinnerEnabled: {
|
|
58
|
+
type: [String, Boolean],
|
|
59
|
+
default: true,
|
|
60
|
+
},
|
|
61
|
+
grayScaleSelector: {
|
|
62
|
+
type: [String, Boolean],
|
|
63
|
+
default: true,
|
|
64
|
+
},
|
|
65
|
+
staticDays: {
|
|
66
|
+
type: [String, Boolean],
|
|
67
|
+
default: true,
|
|
68
|
+
},
|
|
69
|
+
startFrom: {
|
|
70
|
+
type: String,
|
|
71
|
+
default: '',
|
|
72
|
+
},
|
|
73
|
+
weatherUpdated: {
|
|
74
|
+
type: String,
|
|
75
|
+
default: '',
|
|
76
|
+
},
|
|
77
|
+
floodUpdated: {
|
|
78
|
+
type: String,
|
|
79
|
+
default: '',
|
|
80
|
+
},
|
|
81
|
+
weatherWarnings: {
|
|
82
|
+
type: String,
|
|
83
|
+
default: '',
|
|
84
|
+
},
|
|
85
|
+
floodWarnings: {
|
|
86
|
+
type: String,
|
|
87
|
+
default: '',
|
|
88
|
+
},
|
|
89
|
+
warnings: {
|
|
90
|
+
type: [String, Object],
|
|
91
|
+
default: null,
|
|
92
|
+
},
|
|
93
|
+
dailyWarningTypes: {
|
|
94
|
+
type: [String, Array],
|
|
95
|
+
default: () => [],
|
|
96
|
+
},
|
|
97
|
+
refreshInterval: {
|
|
98
|
+
type: [String, Number],
|
|
99
|
+
default: 900000, // 1000 * 60 * 15
|
|
100
|
+
},
|
|
101
|
+
geometryId: {
|
|
102
|
+
type: [String, Number],
|
|
103
|
+
default: () => Number(config.props.defaultGeometryId) || 2021,
|
|
104
|
+
},
|
|
105
|
+
language: {
|
|
106
|
+
type: String,
|
|
107
|
+
default: import.meta.env.VITE_LANGUAGE || 'fi',
|
|
108
|
+
},
|
|
109
|
+
theme: {
|
|
110
|
+
type: String,
|
|
111
|
+
default: 'light',
|
|
112
|
+
},
|
|
113
|
+
fontScale: {
|
|
114
|
+
type: [String, Number],
|
|
115
|
+
default: 1,
|
|
116
|
+
},
|
|
117
|
+
sleep: {
|
|
118
|
+
type: [String, Boolean],
|
|
119
|
+
default: true,
|
|
120
|
+
},
|
|
121
|
+
debugMode: {
|
|
122
|
+
type: [String, Boolean],
|
|
123
|
+
default: false,
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
computed: {
|
|
127
|
+
// Type normalizers for mixed-type props
|
|
128
|
+
selectedDayNormalized() {
|
|
129
|
+
return toNum(this.selectedDay, 0)
|
|
130
|
+
},
|
|
131
|
+
regionListEnabledNormalized() {
|
|
132
|
+
return toBool(this.regionListEnabled, true)
|
|
133
|
+
},
|
|
134
|
+
grayScaleSelectorNormalized() {
|
|
135
|
+
return toBool(this.grayScaleSelector, true)
|
|
136
|
+
},
|
|
137
|
+
staticDaysNormalized() {
|
|
138
|
+
return toBool(this.staticDays, true)
|
|
139
|
+
},
|
|
140
|
+
dailyWarningTypesNormalized() {
|
|
141
|
+
if (Array.isArray(this.dailyWarningTypes)) return this.dailyWarningTypes
|
|
142
|
+
if (
|
|
143
|
+
typeof this.dailyWarningTypes === 'string' &&
|
|
144
|
+
this.dailyWarningTypes
|
|
145
|
+
) {
|
|
146
|
+
return this.dailyWarningTypes.split(',').map((item) => item.trim())
|
|
147
|
+
}
|
|
148
|
+
return []
|
|
149
|
+
},
|
|
150
|
+
refreshIntervalNormalized() {
|
|
151
|
+
return toNum(this.refreshInterval, 900000)
|
|
152
|
+
},
|
|
153
|
+
geometryIdNormalized() {
|
|
154
|
+
return toNum(this.geometryId, 2021)
|
|
155
|
+
},
|
|
156
|
+
sleepNormalized() {
|
|
157
|
+
return toBool(this.sleep, true)
|
|
158
|
+
},
|
|
159
|
+
spinnerEnabledNormalized() {
|
|
160
|
+
return toBool(this.spinnerEnabled, true)
|
|
161
|
+
},
|
|
162
|
+
debugModeNormalized() {
|
|
163
|
+
return toBool(this.debugMode, false)
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
}
|
|
167
|
+
</script>
|
|
168
|
+
<style lang="scss">
|
|
169
|
+
@import './scss/utilities.scss';
|
|
170
|
+
</style>
|
package/src/App.vue
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<AlertClient
|
|
3
3
|
v-if="visible"
|
|
4
|
-
:refresh-interval="
|
|
5
|
-
:default-day="
|
|
6
|
-
:static-days="
|
|
4
|
+
:refresh-interval="refreshIntervalNormalized"
|
|
5
|
+
:default-day="selectedDayNormalized"
|
|
6
|
+
:static-days="staticDaysNormalized"
|
|
7
7
|
:start-from="startFrom"
|
|
8
|
-
:region-list-enabled="
|
|
9
|
-
:gray-scale-selector="
|
|
8
|
+
:region-list-enabled="regionListEnabledNormalized"
|
|
9
|
+
:gray-scale-selector="grayScaleSelectorNormalized"
|
|
10
10
|
:current-time="currentTime"
|
|
11
11
|
:warnings-data="warningsData"
|
|
12
|
-
:daily-warning-types="
|
|
13
|
-
:geometry-id="
|
|
12
|
+
:daily-warning-types="dailyWarningTypesNormalized"
|
|
13
|
+
:geometry-id="geometryIdNormalized"
|
|
14
14
|
:language="language"
|
|
15
15
|
:theme="themeClass"
|
|
16
|
-
:sleep="
|
|
16
|
+
:sleep="sleepNormalized"
|
|
17
17
|
:loading="loading"
|
|
18
|
-
:spinner-enabled="
|
|
18
|
+
:spinner-enabled="spinnerEnabledNormalized"
|
|
19
19
|
@loaded="onLoaded"
|
|
20
|
-
@
|
|
20
|
+
@theme-changed="onThemeChanged"
|
|
21
21
|
@update-warnings="fetchWarnings" />
|
|
22
22
|
</template>
|
|
23
23
|
<script>
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Web component wrapper for AlertClient.
|
|
26
|
+
* All props are strings (HTML attribute limitation).
|
|
27
|
+
* Use AlertClientVue.vue for native Vue usage with proper types.
|
|
28
|
+
*/
|
|
26
29
|
import AlertClient from './components/AlertClient.vue'
|
|
30
|
+
import alertClientCore, { toBool, toNum } from './mixins/alertClientCore'
|
|
27
31
|
import config from './mixins/config'
|
|
28
32
|
import utils from './mixins/utils'
|
|
29
33
|
|
|
@@ -32,7 +36,7 @@ export default {
|
|
|
32
36
|
components: {
|
|
33
37
|
AlertClient,
|
|
34
38
|
},
|
|
35
|
-
mixins: [config, utils],
|
|
39
|
+
mixins: [config, utils, alertClientCore],
|
|
36
40
|
props: {
|
|
37
41
|
currentDate: {
|
|
38
42
|
type: String,
|
|
@@ -66,10 +70,22 @@ export default {
|
|
|
66
70
|
type: String,
|
|
67
71
|
default: '',
|
|
68
72
|
},
|
|
69
|
-
weatherUpdated:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
weatherUpdated: {
|
|
74
|
+
type: String,
|
|
75
|
+
default: '',
|
|
76
|
+
},
|
|
77
|
+
floodUpdated: {
|
|
78
|
+
type: String,
|
|
79
|
+
default: '',
|
|
80
|
+
},
|
|
81
|
+
weatherWarnings: {
|
|
82
|
+
type: String,
|
|
83
|
+
default: '',
|
|
84
|
+
},
|
|
85
|
+
floodWarnings: {
|
|
86
|
+
type: String,
|
|
87
|
+
default: '',
|
|
88
|
+
},
|
|
73
89
|
warnings: {
|
|
74
90
|
type: String,
|
|
75
91
|
default: '',
|
|
@@ -94,11 +110,11 @@ export default {
|
|
|
94
110
|
type: String,
|
|
95
111
|
default: 'light',
|
|
96
112
|
},
|
|
97
|
-
|
|
113
|
+
fontScale: {
|
|
98
114
|
type: String,
|
|
99
|
-
default: '
|
|
115
|
+
default: '1',
|
|
100
116
|
},
|
|
101
|
-
|
|
117
|
+
sleep: {
|
|
102
118
|
type: String,
|
|
103
119
|
default: 'true',
|
|
104
120
|
},
|
|
@@ -107,177 +123,43 @@ export default {
|
|
|
107
123
|
default: 'false',
|
|
108
124
|
},
|
|
109
125
|
},
|
|
110
|
-
data() {
|
|
111
|
-
return {
|
|
112
|
-
loading: 1,
|
|
113
|
-
updatedAt: null,
|
|
114
|
-
refreshedAt: null,
|
|
115
|
-
themeClass: `${this.theme}-theme`,
|
|
116
|
-
warningsData: null,
|
|
117
|
-
visible: true,
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
126
|
computed: {
|
|
121
|
-
|
|
122
|
-
|
|
127
|
+
// String-to-type normalizers for web component props
|
|
128
|
+
selectedDayNormalized() {
|
|
129
|
+
return toNum(this.selectedDay, 0)
|
|
123
130
|
},
|
|
124
|
-
|
|
125
|
-
return this.regionListEnabled
|
|
131
|
+
regionListEnabledNormalized() {
|
|
132
|
+
return toBool(this.regionListEnabled, true)
|
|
126
133
|
},
|
|
127
|
-
|
|
128
|
-
return this.grayScaleSelector
|
|
134
|
+
grayScaleSelectorNormalized() {
|
|
135
|
+
return toBool(this.grayScaleSelector, true)
|
|
129
136
|
},
|
|
130
|
-
|
|
131
|
-
return this.staticDays
|
|
137
|
+
staticDaysNormalized() {
|
|
138
|
+
return toBool(this.staticDays, true)
|
|
132
139
|
},
|
|
133
|
-
|
|
140
|
+
dailyWarningTypesNormalized() {
|
|
134
141
|
return this.dailyWarningTypes
|
|
135
142
|
? this.dailyWarningTypes.split(',').map((item) => item.trim())
|
|
136
143
|
: []
|
|
137
144
|
},
|
|
138
|
-
|
|
139
|
-
return
|
|
140
|
-
},
|
|
141
|
-
geometryIdParsed() {
|
|
142
|
-
return Number(this.geometryId)
|
|
143
|
-
},
|
|
144
|
-
sleepParsed() {
|
|
145
|
-
return this.sleep.toLowerCase() !== 'false'
|
|
146
|
-
},
|
|
147
|
-
spinnerEnabledParsed() {
|
|
148
|
-
return this.spinnerEnabled.toLowerCase() !== 'false'
|
|
149
|
-
},
|
|
150
|
-
weatherUpdatedType() {
|
|
151
|
-
return 'weather_update_time'
|
|
152
|
-
},
|
|
153
|
-
floodUpdatedType() {
|
|
154
|
-
return 'flood_update_time'
|
|
155
|
-
},
|
|
156
|
-
weatherWarningsType() {
|
|
157
|
-
return 'weather_finland_active_all'
|
|
158
|
-
},
|
|
159
|
-
floodWarningsType() {
|
|
160
|
-
return 'flood_finland_active_all'
|
|
161
|
-
},
|
|
162
|
-
weatherUpdatedQuery() {
|
|
163
|
-
return this.weatherUpdated || `${this.query}${this.weatherUpdatedType}`
|
|
164
|
-
},
|
|
165
|
-
floodUpdatedQuery() {
|
|
166
|
-
return this.floodUpdated || `${this.query}${this.floodUpdatedType}`
|
|
167
|
-
},
|
|
168
|
-
weatherWarningsQuery() {
|
|
169
|
-
return this.weatherWarnings || `${this.query}${this.weatherWarningsType}`
|
|
170
|
-
},
|
|
171
|
-
floodWarningsQuery() {
|
|
172
|
-
return (
|
|
173
|
-
this.floodWarnings ||
|
|
174
|
-
`${this.query}${this.floodWarningsType}${this.floodFilter}`
|
|
175
|
-
)
|
|
176
|
-
},
|
|
177
|
-
query() {
|
|
178
|
-
return '?service=WFS&version=1.0.0&request=GetFeature&maxFeatures=1000&outputFormat=application%2Fjson&typeName='
|
|
179
|
-
},
|
|
180
|
-
floodSupportedSeverities() {
|
|
181
|
-
return ['moderate', 'severe', 'extreme']
|
|
182
|
-
},
|
|
183
|
-
floodFilter() {
|
|
184
|
-
return `${this.floodSupportedSeverities.reduce(
|
|
185
|
-
(filter, severity, index) =>
|
|
186
|
-
`${filter + (index === 0 ? '' : ',')}%27${severity.toUpperCase()}%27`,
|
|
187
|
-
'&cql_filter=severity%20IN%20('
|
|
188
|
-
)})%20AND%20language=%27${this.capLanguage()}%27`
|
|
189
|
-
},
|
|
190
|
-
capLanguage() {
|
|
191
|
-
return () =>
|
|
192
|
-
({
|
|
193
|
-
fi: 'fi-FI',
|
|
194
|
-
sv: 'sv-SV',
|
|
195
|
-
en: 'en-US',
|
|
196
|
-
})[this.language]
|
|
197
|
-
},
|
|
198
|
-
currentTime() {
|
|
199
|
-
if (this.refreshedAt) {
|
|
200
|
-
return this.refreshedAt
|
|
201
|
-
}
|
|
202
|
-
if (this.currentDate) {
|
|
203
|
-
return new Date(this.currentDate).getTime()
|
|
204
|
-
}
|
|
205
|
-
return Date.now()
|
|
206
|
-
},
|
|
207
|
-
},
|
|
208
|
-
created() {
|
|
209
|
-
if (this.warnings) {
|
|
210
|
-
this.warningsData = JSON.parse(this.warnings)
|
|
211
|
-
}
|
|
212
|
-
},
|
|
213
|
-
serverPrefetch() {
|
|
214
|
-
if (!this.warnings) {
|
|
215
|
-
return this.fetchWarnings()
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
methods: {
|
|
219
|
-
onLoaded(loaded) {
|
|
220
|
-
if (loaded !== 0) {
|
|
221
|
-
this.loading = loaded === -1 ? -1 : 0
|
|
222
|
-
}
|
|
145
|
+
refreshIntervalNormalized() {
|
|
146
|
+
return toNum(this.refreshInterval, 900000)
|
|
223
147
|
},
|
|
224
|
-
|
|
225
|
-
this.
|
|
226
|
-
newTheme != null && newTheme.length > 0 ? newTheme : this.theme
|
|
227
|
-
}-theme`
|
|
148
|
+
geometryIdNormalized() {
|
|
149
|
+
return toNum(this.geometryId, 2021)
|
|
228
150
|
},
|
|
229
|
-
|
|
230
|
-
this.
|
|
231
|
-
if (this.debugMode.toLowerCase() !== 'false') {
|
|
232
|
-
console.log(`Updating warnings at ${new Date()}`)
|
|
233
|
-
}
|
|
234
|
-
const queries = new Map()
|
|
235
|
-
.set(
|
|
236
|
-
`${this.baseUrl}${this.weatherUpdatedQuery}`,
|
|
237
|
-
this.weatherUpdatedType
|
|
238
|
-
)
|
|
239
|
-
.set(`${this.baseUrl}${this.floodUpdatedQuery}`, this.floodUpdatedType)
|
|
240
|
-
.set(
|
|
241
|
-
`${this.baseUrl}${this.weatherWarningsQuery}`,
|
|
242
|
-
this.weatherWarningsType
|
|
243
|
-
)
|
|
244
|
-
.set(
|
|
245
|
-
`${this.baseUrl}${this.floodWarningsQuery}`,
|
|
246
|
-
this.floodWarningsType
|
|
247
|
-
)
|
|
248
|
-
const responseData = {}
|
|
249
|
-
return Promise.allSettled(
|
|
250
|
-
[...queries.keys()].map(async (query) =>
|
|
251
|
-
fetch(query).then((response) =>
|
|
252
|
-
response
|
|
253
|
-
.json()
|
|
254
|
-
.then((json) => {
|
|
255
|
-
const currentTime = Date.now()
|
|
256
|
-
if (this.updatedAt != null) {
|
|
257
|
-
this.refreshedAt = currentTime
|
|
258
|
-
}
|
|
259
|
-
this.updatedAt = currentTime
|
|
260
|
-
responseData[queries.get(query)] = json
|
|
261
|
-
})
|
|
262
|
-
.catch((error) => {
|
|
263
|
-
this.loading = -1
|
|
264
|
-
console.log(error)
|
|
265
|
-
})
|
|
266
|
-
)
|
|
267
|
-
)
|
|
268
|
-
).then(() => {
|
|
269
|
-
this.warningsData = responseData
|
|
270
|
-
})
|
|
151
|
+
sleepNormalized() {
|
|
152
|
+
return toBool(this.sleep, true)
|
|
271
153
|
},
|
|
272
|
-
|
|
273
|
-
this.
|
|
154
|
+
spinnerEnabledNormalized() {
|
|
155
|
+
return toBool(this.spinnerEnabled, true)
|
|
274
156
|
},
|
|
275
|
-
|
|
276
|
-
this.
|
|
157
|
+
debugModeNormalized() {
|
|
158
|
+
return toBool(this.debugMode, false)
|
|
277
159
|
},
|
|
278
160
|
},
|
|
279
161
|
}
|
|
280
162
|
</script>
|
|
281
|
-
<style>
|
|
282
|
-
@import '
|
|
163
|
+
<style lang="scss">
|
|
164
|
+
@import './scss/utilities.scss';
|
|
283
165
|
</style>
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<desc>Created with Sketch.</desc>
|
|
6
|
-
<defs></defs>
|
|
7
|
-
<g id="icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
|
|
8
|
-
<g id="Symbols" transform="translate(-732.000000, -738.000000)" stroke="#979797" stroke-width="1.5">
|
|
9
|
-
<g id="arrow-down-symbol" transform="translate(733.000000, 739.000000)">
|
|
10
|
-
<polyline id="fill-1" transform="translate(6.500000, 3.000000) rotate(-270.000000) translate(-6.500000, -3.000000) " points="3.5 -3.5 9.5 3 3.5 9.5"></polyline>
|
|
11
|
-
</g>
|
|
12
|
-
</g>
|
|
13
|
-
</g>
|
|
14
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="8">
|
|
2
|
+
<title>arrow-down-symbol</title>
|
|
3
|
+
<path fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M14 1 7.5 7 1 1"/>
|
|
4
|
+
</svg>
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<desc>Created with Sketch.</desc>
|
|
6
|
-
<defs></defs>
|
|
7
|
-
<g id="icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
|
|
8
|
-
<g id="Symbols" transform="translate(-670.000000, -738.000000)" stroke="#979797" stroke-width="1.5">
|
|
9
|
-
<g id="arrow-up-symbol" transform="translate(671.000000, 739.000000)">
|
|
10
|
-
<polyline id="fill-1" transform="translate(6.500000, 3.000000) scale(1, -1) rotate(-270.000000) translate(-6.500000, -3.000000) " points="3.5 -3.5 9.5 3 3.5 9.5"></polyline>
|
|
11
|
-
</g>
|
|
12
|
-
</g>
|
|
13
|
-
</g>
|
|
14
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="8">
|
|
2
|
+
<title>arrow-up-symbol</title>
|
|
3
|
+
<path fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M14 7 7.5 1 1 7"/>
|
|
4
|
+
</svg>
|
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<g id="varoitukset-tablet-aktiivinen-varoitussymboli-v1" transform="translate(-710.000000, -241.000000)">
|
|
9
|
-
<g id="legenda" transform="translate(514.000000, 240.000000)">
|
|
10
|
-
<g id="poista-valinnat-linkki" transform="translate(106.000000, 1.000000)">
|
|
11
|
-
<g id="close-icon" transform="translate(90.000000, 0.000000)">
|
|
12
|
-
<circle id="oval" fill="#56B8E5" cx="7" cy="7" r="7"></circle>
|
|
13
|
-
<g id="Group" transform="translate(7.156854, 7.156854) rotate(-315.000000) translate(-7.156854, -7.156854) translate(3.156854, 3.156854)" fill="#FFFFFF">
|
|
14
|
-
<path d="M4.5,4.5 L4.5,7 C4.5,7.27614237 4.27614237,7.5 4,7.5 C3.72385763,7.5 3.5,7.27614237 3.5,7 L3.5,4.5 L1,4.5 C0.723857625,4.5 0.5,4.27614237 0.5,4 C0.5,3.72385763 0.723857625,3.5 1,3.5 L3.5,3.5 L3.5,1 C3.5,0.723857625 3.72385763,0.5 4,0.5 C4.27614237,0.5 4.5,0.723857625 4.5,1 L4.5,3.5 L7,3.5 C7.27614237,3.5 7.5,3.72385763 7.5,4 C7.5,4.27614237 7.27614237,4.5 7,4.5 L4.5,4.5 L4.5,4.5 Z" id="x"></path>
|
|
15
|
-
</g>
|
|
16
|
-
</g>
|
|
17
|
-
</g>
|
|
18
|
-
</g>
|
|
19
|
-
</g>
|
|
20
|
-
</g>
|
|
21
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14">
|
|
2
|
+
<title>close icon</title>
|
|
3
|
+
<g fill="none" fill-rule="evenodd">
|
|
4
|
+
<circle cx="7" cy="7" r="7" fill="#56b8e5"/>
|
|
5
|
+
<path fill="#fff" d="M7.157 7.864 5.389 9.632a.5.5 0 0 1-.707-.707L6.45 7.157 4.682 5.389a.5.5 0 0 1 .707-.707L7.157 6.45l1.768-1.768a.5.5 0 0 1 .707.707L7.864 7.157l1.768 1.768a.5.5 0 0 1-.707.707z"/>
|
|
6
|
+
</g>
|
|
7
|
+
</svg>
|
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<desc>Created with Sketch.</desc>
|
|
6
|
-
<defs></defs>
|
|
7
|
-
<g id="icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
|
|
8
|
-
<g id="Symbols" transform="translate(-793.000000, -735.000000)" stroke="#000000" stroke-width="1.5">
|
|
9
|
-
<g id="close-symbol" transform="translate(794.000000, 736.000000)">
|
|
10
|
-
<path d="M0,9.19238816 L9.19238816,0" id="fill-2"></path>
|
|
11
|
-
<path d="M0,0 L9.19238816,9.19238816" id="fill-1"></path>
|
|
12
|
-
</g>
|
|
13
|
-
</g>
|
|
14
|
-
</g>
|
|
15
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="11" height="11">
|
|
2
|
+
<title>close-symbol</title>
|
|
3
|
+
<path fill="none" stroke="#000" stroke-linecap="round" stroke-width="1.5" d="M1 10.192 10.192 1M1 1l9.192 9.192"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="55" height="30">
|
|
2
|
+
<defs>
|
|
3
|
+
<clipPath id="outer-clip">
|
|
4
|
+
<rect width="55" height="20" y="5" rx="4" ry="4"/>
|
|
5
|
+
</clipPath>
|
|
6
|
+
<clipPath id="inner-clip">
|
|
7
|
+
<path d="M35 5h16a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4H35Z"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<rect width="55" height="20" y="5" fill="#767676" stroke="#767676" clip-path="url(#outer-clip)" rx="4" ry="4"/>
|
|
11
|
+
<path fill="#fff" stroke="#767676" d="M35 5h16a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4H35Z" clip-path="url(#inner-clip)"/>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="55" height="30">
|
|
2
|
+
<defs>
|
|
3
|
+
<clipPath id="outer-clip">
|
|
4
|
+
<rect width="55" height="20" y="5" rx="4" ry="4"/>
|
|
5
|
+
</clipPath>
|
|
6
|
+
<clipPath id="inner-clip">
|
|
7
|
+
<path d="M4 5h16v20H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<rect width="55" height="20" y="5" fill="#ebebeb" stroke="#767676" clip-path="url(#outer-clip)" rx="4" ry="4"/>
|
|
11
|
+
<path fill="#fff" stroke="#767676" d="M4 5h16v20H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4Z" clip-path="url(#inner-clip)"/>
|
|
12
|
+
</svg>
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
<path style="stroke:rgba(255, 255, 255, 1.0);stroke-width: 2.5px;paint-order: stroke;fill-rule:evenodd;fill:rgb(13.333333%,12.156863%,12.54902%);fill-opacity:1;" d="M 13.828125 21.453125 C 12.722656 21.453125 11.820312 20.554688 11.820312 19.445312 C 11.820312 18.882812 12.050781 18.359375 12.46875 17.976562 L 12.46875 17.972656 C 12.589844 17.859375 12.667969 17.699219 12.667969 17.519531 L 12.667969 7.382812 C 12.667969 6.742188 13.1875 6.222656 13.828125 6.222656 C 14.46875 6.222656 14.992188 6.742188 14.992188 7.382812 L 14.992188 17.519531 C 14.992188 17.699219 15.070312 17.859375 15.191406 17.972656 L 15.191406 17.976562 C 15.609375 18.359375 15.835938 18.882812 15.835938 19.445312 C 15.835938 20.554688 14.9375 21.453125 13.828125 21.453125 Z M 17.503906 9.894531 C 17.792969 9.894531 18.023438 9.660156 18.023438 9.375 C 18.023438 9.089844 17.792969 8.855469 17.503906 8.855469 L 16.234375 8.855469 L 16.234375 8.203125 L 17.503906 8.203125 C 17.792969 8.203125 18.023438 7.96875 18.023438 7.683594 C 18.023438 7.398438 17.792969 7.164062 17.503906 7.164062 L 16.226562 7.164062 C 16.113281 5.941406 15.082031 4.976562 13.828125 4.976562 C 12.503906 4.976562 11.425781 6.058594 11.425781 7.382812 L 11.425781 17.265625 C 10.882812 17.859375 10.578125 18.640625 10.578125 19.445312 C 10.578125 21.238281 12.035156 22.699219 13.828125 22.699219 C 15.621094 22.699219 17.082031 21.238281 17.082031 19.445312 C 17.082031 18.640625 16.777344 17.859375 16.234375 17.265625 L 16.234375 11.585938 L 17.503906 11.585938 C 17.792969 11.585938 18.023438 11.355469 18.023438 11.066406 C 18.023438 10.78125 17.792969 10.550781 17.503906 10.550781 L 16.234375 10.550781 L 16.234375 9.894531 Z M 17.503906 9.894531 "/>
|
|
5
|
-
<path style="stroke:rgba(255, 255, 255, 1.0);stroke-width: 1px;paint-order: stroke;fill-rule:evenodd;fill:rgb(13.333333%,12.156863%,12.54902%);fill-opacity:1;" d="M 14.367188 18.234375 L 14.367188 12.691406 C 14.367188 12.390625 14.128906 12.152344 13.828125 12.152344 C 13.53125 12.152344 13.289062 12.390625 13.289062 12.691406 L 13.289062 18.234375 C 12.824219 18.441406 12.5 18.90625 12.5 19.445312 C 12.5 20.179688 13.097656 20.773438 13.828125 20.773438 C 14.5625 20.773438 15.15625 20.179688 15.15625 19.445312 C 15.15625 18.90625 14.832031 18.441406 14.367188 18.234375 "/>
|
|
6
|
-
</g>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28">
|
|
2
|
+
<path fill="#221f20" fill-rule="evenodd" stroke="#fff" stroke-width="2.5" d="M13.828 21.453a2.01 2.01 0 0 1-2.008-2.008c0-.562.23-1.086.649-1.468v-.004a.62.62 0 0 0 .199-.453V7.383a1.16 1.16 0 0 1 2.324 0V17.52c0 .18.078.34.2.453v.004c.417.382.644.906.644 1.468 0 1.11-.899 2.008-2.008 2.008Zm3.676-11.558a.52.52 0 1 0 0-1.04h-1.27v-.652h1.27a.52.52 0 1 0 0-1.039h-1.277a2.414 2.414 0 0 0-2.399-2.187 2.41 2.41 0 0 0-2.402 2.406v9.883a3.24 3.24 0 0 0-.848 2.18 3.256 3.256 0 0 0 3.25 3.253 3.26 3.26 0 0 0 3.254-3.254 3.24 3.24 0 0 0-.848-2.18v-5.68h1.27a.517.517 0 1 0 0-1.034h-1.27v-.656Zm0 0" paint-order="stroke"/>
|
|
3
|
+
<path fill="#221f20" fill-rule="evenodd" stroke="#fff" d="M14.367 18.234v-5.543c0-.3-.238-.539-.539-.539a.54.54 0 0 0-.539.54v5.542a1.327 1.327 0 1 0 1.867 1.211c0-.539-.324-1.004-.789-1.21" paint-order="stroke"/>
|
|
7
4
|
</svg>
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
<path
|
|
5
|
-
<path style="stroke:rgba(255, 255, 255, 1.0);stroke-width: 2.2px;paint-order: stroke;fill-rule:evenodd;fill:rgb(13.72549%,12.156863%,12.54902%);fill-opacity:1;" d="M 20.386719 11.488281 L 13.933594 6.632812 L 7.480469 11.488281 L 9.886719 11.488281 L 9.886719 18.070312 L 9.90625 18.070312 C 10.667969 18.070312 11.035156 17.675781 11.503906 17.175781 C 12.027344 16.617188 12.679688 15.921875 13.933594 15.921875 C 15.1875 15.921875 15.835938 16.617188 16.359375 17.175781 C 16.828125 17.675781 17.199219 18.070312 17.957031 18.070312 L 17.976562 18.070312 L 17.976562 11.488281 Z M 15.074219 13.90625 L 12.753906 13.90625 L 12.753906 11.589844 L 15.074219 11.589844 Z M 15.074219 13.90625 "/>
|
|
6
|
-
<path style="stroke:rgba(255, 255, 255, 1.0);stroke-width: 2.2px;paint-order: stroke;fill-rule:evenodd;fill:rgb(13.72549%,12.156863%,12.54902%);fill-opacity:1;" d="M 21.542969 15.527344 C 20.371094 15.527344 19.757812 16.179688 19.265625 16.703125 C 18.828125 17.171875 18.480469 17.542969 17.765625 17.542969 C 17.050781 17.542969 16.707031 17.171875 16.265625 16.703125 C 15.773438 16.179688 15.164062 15.527344 13.988281 15.527344 C 12.8125 15.527344 12.199219 16.179688 11.707031 16.703125 C 11.269531 17.171875 10.921875 17.542969 10.207031 17.542969 C 9.492188 17.542969 9.148438 17.171875 8.707031 16.703125 C 8.214844 16.179688 7.605469 15.527344 6.429688 15.527344 C 6.132812 15.527344 5.894531 15.765625 5.894531 16.0625 C 5.894531 16.355469 6.132812 16.59375 6.429688 16.59375 L 6.4375 16.59375 C 7.144531 16.597656 7.492188 16.96875 7.929688 17.433594 C 8.417969 17.957031 9.03125 18.609375 10.207031 18.609375 C 11.382812 18.609375 11.996094 17.957031 12.484375 17.433594 C 12.925781 16.964844 13.273438 16.59375 13.988281 16.59375 C 14.699219 16.59375 15.046875 16.964844 15.488281 17.433594 C 15.980469 17.957031 16.589844 18.609375 17.765625 18.609375 C 18.941406 18.609375 19.554688 17.957031 20.042969 17.433594 C 20.480469 16.96875 20.828125 16.597656 21.535156 16.59375 L 21.542969 16.59375 C 21.734375 16.59375 21.910156 16.492188 22.007812 16.328125 C 22.101562 16.164062 22.101562 15.960938 22.007812 15.792969 C 21.910156 15.628906 21.734375 15.527344 21.542969 15.527344 Z M 21.542969 15.527344 "/>
|
|
7
|
-
</g>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28">
|
|
2
|
+
<path fill="#231f20" fill-rule="evenodd" stroke="#fff" stroke-width="2.2" d="M21.543 17.965c-1.172 0-1.785.652-2.277 1.176-.438.468-.786.84-1.5.84-.715 0-1.063-.372-1.5-.84-.493-.524-1.106-1.176-2.278-1.176-1.175 0-1.789.652-2.281 1.176-.437.468-.785.836-1.5.836s-1.059-.368-1.5-.836c-.492-.524-1.102-1.176-2.277-1.176a.533.533 0 1 0 0 1.066h.011c.704.004 1.051.375 1.489.84.492.524 1.101 1.176 2.277 1.176s1.79-.652 2.277-1.176c.442-.469.79-.84 1.504-.84.711 0 1.059.371 1.5.84.492.524 1.102 1.176 2.278 1.176s1.789-.652 2.277-1.176c.437-.465.785-.832 1.492-.84h.008a.533.533 0 1 0 0-1.066Zm0 0" paint-order="stroke"/>
|
|
3
|
+
<path fill="#231f20" fill-rule="evenodd" stroke="#fff" stroke-width="2.2" d="m20.387 11.488-6.453-4.855-6.454 4.855h2.407v6.582h.02c.761 0 1.128-.394 1.597-.894.523-.559 1.176-1.254 2.43-1.254s1.902.695 2.425 1.254c.47.5.84.894 1.598.894h.02v-6.582Zm-5.313 2.418h-2.32V11.59h2.32Zm0 0" paint-order="stroke"/>
|
|
4
|
+
<path fill="#231f20" fill-rule="evenodd" stroke="#fff" stroke-width="2.2" d="M21.543 15.527c-1.172 0-1.785.653-2.277 1.176-.438.469-.786.84-1.5.84-.715 0-1.059-.371-1.5-.84-.493-.523-1.102-1.176-2.278-1.176s-1.789.653-2.281 1.176c-.437.469-.785.84-1.5.84s-1.059-.371-1.5-.84c-.492-.523-1.102-1.176-2.277-1.176a.533.533 0 1 0 0 1.067h.008c.707.004 1.054.375 1.492.84.488.523 1.101 1.175 2.277 1.175s1.79-.652 2.277-1.175c.442-.47.79-.84 1.504-.84.711 0 1.059.37 1.5.84.492.523 1.102 1.175 2.278 1.175s1.789-.652 2.277-1.175c.437-.465.785-.836 1.492-.84h.008a.54.54 0 0 0 .465-.266.54.54 0 0 0 0-.535.54.54 0 0 0-.465-.266Zm0 0" paint-order="stroke"/>
|
|
8
5
|
</svg>
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
<g id="surface1">
|
|
4
|
-
<path style="stroke:rgba(255, 255, 255, 1.0);stroke-width: 2.5px;paint-order: stroke;fill-rule:evenodd;fill:rgb(13.333333%,12.156863%,12.54902%);fill-opacity:1;" d="M 17.992188 12.910156 C 18.265625 14.246094 16.886719 16.019531 16.394531 15.089844 C 16.152344 14.632812 16.546875 13.894531 16.683594 13.460938 C 16.910156 12.742188 17.089844 11.980469 17.058594 11.222656 C 16.96875 8.910156 15.054688 5.578125 12.042969 5.601562 C 13.71875 7.621094 9.484375 9.496094 10.328125 13.910156 C 9.578125 13.78125 9.035156 12.359375 9.035156 12.359375 C 9.035156 12.359375 7.273438 18.726562 12.558594 18.726562 C 11.25 17.902344 10.289062 16.695312 10.25 15.304688 C 10.25 15.304688 11.398438 16.257812 12.414062 16.214844 C 11.648438 14.226562 13.027344 12.148438 14.742188 11.414062 C 14.175781 12.597656 13.578125 14.074219 13.753906 15.40625 C 14.027344 17.46875 16.335938 17.34375 17.816406 16.050781 C 17.816406 16.929688 16.609375 18.023438 15.855469 18.726562 C 20.917969 17.769531 19.09375 13.390625 17.992188 12.910156 "/>
|
|
5
|
-
<path style="stroke:rgba(255, 255, 255, 1.0);stroke-width: 2.5px;paint-order: stroke;fill-rule:evenodd;fill:rgb(13.333333%,12.156863%,12.54902%);fill-opacity:1;" d="M 8.089844 20.925781 L 20.527344 20.925781 L 20.527344 19.714844 L 8.089844 19.714844 Z M 8.089844 20.925781 "/>
|
|
6
|
-
</g>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28">
|
|
2
|
+
<path fill="#221f20" fill-rule="evenodd" stroke="#fff" stroke-width="2.5" d="M17.992 12.91c.274 1.336-1.105 3.11-1.597 2.18-.243-.457.152-1.195.289-1.63.226-.718.406-1.48.375-2.237-.09-2.313-2.004-5.645-5.016-5.621 1.676 2.02-2.559 3.894-1.715 8.308-.75-.129-1.293-1.55-1.293-1.55s-1.762 6.367 3.524 6.367c-1.309-.825-2.27-2.032-2.309-3.422 0 0 1.148.953 2.164.91-.766-1.988.613-4.067 2.328-4.8-.566 1.183-1.164 2.66-.988 3.991.273 2.063 2.582 1.938 4.062.645 0 .879-1.207 1.972-1.96 2.676 5.062-.957 3.238-5.336 2.136-5.817M8.09 20.926h12.437v-1.211H8.09Zm0 0" paint-order="stroke"/>
|
|
7
3
|
</svg>
|