Skip to content

Commit d3e5264

Browse files
committed
Expand information for avalanche problems.
Display trigger sensitivity, propagation, and destructive size in the detailed warning view for each avalanche problem.
1 parent b442a56 commit d3e5264

File tree

15 files changed

+166
-6
lines changed

15 files changed

+166
-6
lines changed

SkredvarselGarminWeb/SkredvarselGarminWeb/Endpoints/Mappers/DetailedAvalancheWarningMapper.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ public static class DetailedAvalancheWarningMapper
3434
],
3535
ValidExpositions = problem.ValidExpositions,
3636
DangerLevel = problem.DangerLevel,
37+
DestructiveSize = problem.DestructiveSizeExtId,
38+
TriggerSensitivity = problem.AvalTriggerSensitivityId,
39+
Propagation = problem.AvalPropagationId,
3740
}).OrderByDescending(x => x.DangerLevel),
3841
IsTendency = varsomWarning.IsTendency,
3942
EmergencyWarning = varsomWarning.EmergencyWarning?.ToEmergencyWarning(langKey)

SkredvarselGarminWeb/SkredvarselGarminWeb/Endpoints/Models/DetailedAvalancheWarning.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System.Text.Json.Serialization;
22

3+
using SkredvarselGarminWeb.VarsomApi.Models;
4+
35
namespace SkredvarselGarminWeb.Endpoints.Models;
46

57
public class DetailedAvalancheWarning
@@ -21,4 +23,7 @@ public class AvalancheProblem
2123
public required int[] ExposedHeights { get; init; }
2224
public required string ValidExpositions { get; init; }
2325
public required int DangerLevel { get; init; }
26+
public required DestructiveSizeExt DestructiveSize { get; init; }
27+
public required AvalTriggerSensitivity TriggerSensitivity { get; init; }
28+
public required AvalPropagation Propagation { get; init; }
2429
}

SkredvarselGarminWeb/SkredvarselGarminWeb/VarsomApi/IVarsomApi.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ namespace SkredvarselGarminWeb.VarsomApi;
66

77
public interface IVarsomApi
88
{
9-
[Get("/avalancheWarningByRegion/Detail/{regionId}/{langKey}/{from}/{to}")]
9+
[Get("/AvalancheWarningByRegion/Detail/{regionId}/{langKey}/{from}/{to}")]
1010
Task<IEnumerable<VarsomDetailedAvalancheWarning>> GetDetailedWarningsByRegion(int regionId, string langKey, DateOnly from, DateOnly to);
1111
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
namespace SkredvarselGarminWeb.VarsomApi.Models;
2+
3+
public enum DestructiveSizeExt
4+
{
5+
NotGiven = 0,
6+
Small = 1,
7+
Medium = 2,
8+
Large = 3,
9+
VeryLarge = 4,
10+
Extreme = 5,
11+
}
12+
13+
public enum AvalTriggerSensitivity
14+
{
15+
NotGiven = 0,
16+
VeryHardToTrigger = 10,
17+
HardToTrigger = 20,
18+
EasyToTrigger = 30,
19+
VeryEasyToTrigger = 40,
20+
NaturallyTriggered = 45,
21+
}
22+
23+
public enum AvalPropagation
24+
{
25+
NotGiven = 0,
26+
FewSteepSlopes = 1,
27+
SomeSteepSlopes = 2,
28+
ManySteepSlopes = 3,
29+
}

SkredvarselGarminWeb/SkredvarselGarminWeb/VarsomApi/Models/VarsomDetailedAvalancheWarning.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ public class VarsomDetailedAvalancheWarning
1515
public class VarsomAvalancheProblem
1616
{
1717
public required string AvalancheProblemTypeName { get; init; }
18-
public required int AvalancheProblemTypeId { get; init; }
1918
public required int ExposedHeight1 { get; init; }
2019
public required int ExposedHeight2 { get; init; }
2120
public required int ExposedHeightFill { get; init; }
2221
public required string ValidExpositions { get; init; }
2322
public required int DangerLevel { get; init; }
23+
public required DestructiveSizeExt DestructiveSizeExtId { get; init; }
24+
public required AvalTriggerSensitivity AvalTriggerSensitivityId { get; init; }
25+
public required AvalPropagation AvalPropagationId { get; init; }
2426
}

skredvarselGarmin/manifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<iq:product id="approachs50"/>
1818
<iq:product id="approachs7042mm"/>
1919
<iq:product id="approachs7047mm"/>
20+
<iq:product id="descentg2"/>
2021
<iq:product id="descentmk2"/>
2122
<iq:product id="descentmk2s"/>
2223
<iq:product id="descentmk343mm"/>

skredvarselGarmin/monkey.jungle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ vivoactive4s.resourcePath = $(base.resourcePath);resources-h30
3838
vivoactive4.resourcePath = $(base.resourcePath);resources-h35
3939
instinct3amoled45mm.resourcePath = $(base.resourcePath);resources-h60
4040
instinct3amoled50mm.resourcePath = $(base.resourcePath);resources-h60
41+
descentg2.resourcePath = $(base.resourcePath);resources-h60
4142

4243
descentmk2.excludeAnnotations=hasComplication;useBufferedBitmapOnGlance
4344
descentmk2s.excludeAnnotations=hasComplication;useBufferedBitmapOnGlance

skredvarselGarmin/resources-nob/strings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,15 @@
3030
<string id="ComplicationShortLabel">Ava</string>
3131
<string id="Updated">Oppdatert</string>
3232
<string id="UseLocation">Bruk klokkeposisjon for å hente nærmeste skredvarsel.</string>
33+
<string id="NotGiven">Ikke gitt</string>
34+
<string id="TriggerSensitivityVeryHardToTrigger">Svært vanskelig å løse ut</string>
35+
<string id="TriggerSensitivityHardToTrigger">Vanskelig å løse ut</string>
36+
<string id="TriggerSensitivityEasyToTrigger">Lett å løse ut</string>
37+
<string id="TriggerSensitivityVeryEasyToTrigger">Svært lett å løse ut</string>
38+
<string id="TriggerSensitivityNaturallyTriggered">Naturlig utløst</string>
39+
<string id="PropagationFewSteepSlopes">Få bratte heng</string>
40+
<string id="PropagationSomeSteepSlopes">Noen bratte heng</string>
41+
<string id="PropagationManySteepSlopes">Mange bratte heng</string>
42+
<string id="Size">Str</string>
43+
<string id="In">i</string>
3344
</strings>

skredvarselGarmin/resources/strings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,15 @@
3030
<string id="ComplicationShortLabel">Ava</string>
3131
<string id="Updated">Updated</string>
3232
<string id="UseLocation">Use watch location to show closest forecast.</string>
33+
<string id="NotGiven">Ikke gitt</string>
34+
<string id="TriggerSensitivityVeryHardToTrigger">Very hard to trigger</string>
35+
<string id="TriggerSensitivityHardToTrigger">Hard to trigger</string>
36+
<string id="TriggerSensitivityEasyToTrigger">Easy to trigger</string>
37+
<string id="TriggerSensitivityVeryEasyToTrigger">Very easy to trigger</string>
38+
<string id="TriggerSensitivityNaturallyTriggered">Naturally triggered</string>
39+
<string id="PropagationFewSteepSlopes">Few steep slopes</string>
40+
<string id="PropagationSomeSteepSlopes">Some steep slopes</string>
41+
<string id="PropagationManySteepSlopes">Many steep slopes</string>
42+
<string id="Size">Size</string>
43+
<string id="In">in</string>
3344
</strings>

skredvarselGarmin/source/AvalancheUi/AvalancheProblemUi.mc

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,81 @@ import Toybox.Lang;
22

33
using Toybox.Graphics as Gfx;
44

5+
function getTriggerSensitivityText(triggerSensitivity as Number) as String {
6+
if (triggerSensitivity == 0) {
7+
return $.getOrLoadResourceString("Ikke gitt", :TriggerSensitivityNotGiven);
8+
} else if (triggerSensitivity == 10) {
9+
return $.getOrLoadResourceString(
10+
"Svært vanskelig å løse ut",
11+
:TriggerSensitivityVeryHardToTrigger
12+
);
13+
} else if (triggerSensitivity == 20) {
14+
return $.getOrLoadResourceString(
15+
"Vanskelig å løse ut",
16+
:TriggerSensitivityHardToTrigger
17+
);
18+
} else if (triggerSensitivity == 30) {
19+
return $.getOrLoadResourceString(
20+
"Lett å løse ut",
21+
:TriggerSensitivityEasyToTrigger
22+
);
23+
} else if (triggerSensitivity == 40) {
24+
return $.getOrLoadResourceString(
25+
"Svært lett å løse ut",
26+
:TriggerSensitivityVeryEasyToTrigger
27+
);
28+
} else if (triggerSensitivity == 45) {
29+
return $.getOrLoadResourceString(
30+
"Naturlig utløst",
31+
:TriggerSensitivityNaturallyTriggered
32+
);
33+
}
34+
35+
throw new SkredvarselGarminException(
36+
"Unknown trigger sensitivity: " + triggerSensitivity
37+
);
38+
}
39+
40+
function getPropagationText(propagation as Number) as String {
41+
if (propagation == 0) {
42+
return $.getOrLoadResourceString("Ikke gitt", :PropagationNotGiven);
43+
} else if (propagation == 1) {
44+
return $.getOrLoadResourceString(
45+
"Få bratte heng",
46+
:PropagationFewSteepSlopes
47+
);
48+
} else if (propagation == 2) {
49+
return $.getOrLoadResourceString(
50+
"Noen bratte heng",
51+
:PropagationSomeSteepSlopes
52+
);
53+
} else if (propagation == 3) {
54+
return $.getOrLoadResourceString(
55+
"Mange bratte heng",
56+
:PropagationManySteepSlopes
57+
);
58+
}
59+
60+
throw new SkredvarselGarminException("Unknown propagation: " + propagation);
61+
}
62+
63+
function getTriggerText(
64+
triggerSensitivity as Number,
65+
propagation as Number
66+
) as String {
67+
return Lang.format("$1$ $2$ $3$", [
68+
getTriggerSensitivityText(triggerSensitivity),
69+
$.getOrLoadResourceString("i", :In),
70+
$.lowercaseFirstChar(getPropagationText(propagation)),
71+
]);
72+
}
73+
74+
function getDestructiveSizeText(size as Number) as String {
75+
var sizeText = $.getOrLoadResourceString("Str", :Size);
76+
77+
return Lang.format("$1$ $2$", [sizeText, size]);
78+
}
79+
580
module AvalancheUi {
681
typedef AvalancheProblemSettings as {
782
:problem as AvalancheProblem,
@@ -44,7 +119,11 @@ module AvalancheUi {
44119
public function initialize(settings as AvalancheProblemSettings) {
45120
var problem = settings[:problem];
46121

47-
_typeName = problem["typeName"];
122+
_typeName = Lang.format("$1$ - $2$ - $3$", [
123+
problem["typeName"],
124+
getTriggerText(problem["triggerSensitivity"], problem["propagation"]),
125+
getDestructiveSizeText(problem["destructiveSize"]),
126+
]);
48127
_exposedHeights = problem["exposedHeights"];
49128
_validExpositions = problem["validExpositions"];
50129
_dangerLevel = problem["dangerLevel"];
@@ -103,6 +182,7 @@ module AvalancheUi {
103182
:text => _typeName,
104183
:containerWidth => _width,
105184
:containerHeight => _height * 0.25,
185+
:scrollSpeed => 2,
106186
:font => Gfx.FONT_XTINY,
107187
});
108188

0 commit comments

Comments
 (0)