6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit 2fffccf0
Changed files
.../assets/animations/load_animation.json | 1833 +++++++++++++++++++- comwell_key_app/assets/translations/da-DK.json | 14 +- comwell_key_app/assets/translations/en-US.json | 10 +- .../lib/check_in/bloc/check_in_cubit.dart | 18 + .../lib/check_in/bloc/check_in_state.dart | 36 + comwell_key_app/lib/check_in/check_in_page.dart | 220 +++ comwell_key_app/lib/routing/app_router.dart | 13 +- comwell_key_app/lib/routing/app_routes.dart | 7 +- comwell_key_app/lib/utils/lottie_utils.dart | 18 + 9 files changed, 2157 insertions(+), 12 deletions(-)
Diff
diff --git a/comwell_key_app/assets/animations/load_animation.json b/comwell_key_app/assets/animations/load_animation.json
index 4781dd98..69335b67 100644
--- a/comwell_key_app/assets/animations/load_animation.json
+++ b/comwell_key_app/assets/animations/load_animation.json
@@ -1 +1,1832 @@
-{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.6.0","a":"","k":"","d":"","tc":""},"fr":59.2332916259766,"ip":0,"op":308.001516397967,"w":650,"h":650,"nm":"Lottie - Load","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Error - Dot","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[4.972,125.264,0],"ix":2},"a":{"a":0,"k":[4.972,124.264,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":249.001,"s":[0,0,100]},{"t":258.001270229466,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[50,50],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.972,124.264],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":208.001024060965,"op":308.001516397967,"st":208.001024060965,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Error - Line","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":248.001,"s":[325,325,0],"to":[3.333,0,0],"ti":[3,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":253.001,"s":[345,325,0],"to":[-3,0,0],"ti":[-0.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":258.001,"s":[307,325,0],"to":[0.333,0,0],"ti":[-3,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":263.001,"s":[347,325,0],"to":[3,0,0],"ti":[3.667,0,0]},{"t":268.001319463166,"s":[325,325,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-160.675,0],[0,-165.401],[153.249,0],[0,0]],"o":[[174.852,0],[0,178.228],[0,0.675],[0,0]],"v":[[-3.376,-305.148],[305.148,-0.675],[4.726,304.473],[4.726,-151.224]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":222.001,"s":[0]},{"t":258.001270229466,"s":[85.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":222.001,"s":[0]},{"t":258.001270229466,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":208.001024060965,"op":308.001516397967,"st":208.001024060965,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Error - Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[325,325,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[610,610],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":209.001,"s":[0]},{"t":258.001270229466,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":209.001,"s":[0]},{"t":258.001270229466,"s":[100]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":209.001,"s":[0]},{"t":258.001270229466,"s":[0]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":208.001024060965,"op":308.001516397967,"st":208.001024060965,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Success - Checkmark","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":157.001,"s":[325,325,0],"to":[0,-11,0],"ti":[0,11,0]},{"t":171.000841896274,"s":[325,259,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[184,0]],"o":[[0,0],[0,0],[0,0],[-205,0]],"v":[[-141,75],[-45,171],[264,-153],[0,-305]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":142.001,"s":[100]},{"t":164.000807432684,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":142.001,"s":[100]},{"t":157.000772969094,"s":[46.4]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":119.000585881033,"op":209.001028984335,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Success - Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[325,325,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[610,610],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":119.001,"s":[0]},{"t":164.000807432684,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":119.001,"s":[0]},{"t":164.000807432684,"s":[100]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":119.001,"s":[0]},{"t":164.000807432684,"s":[0]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":119.000585881033,"op":209.001028984335,"st":119.000585881033,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Loading - Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[325,325,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[610,610],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[25]},{"t":119.000585881033,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[0.708]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0.861]},"t":60,"s":[75]},{"t":119.000585881033,"s":[100]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":119.000585881033,"s":[360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":122.000600651143,"st":0,"bm":0}],"markers":[{"tm":0,"cm":"{\n\"name\":\"spinner\"\n}","dr":118.000580957663},{"tm":119.000585881033,"cm":"{\r\"name\":\"succes\"\r}","dr":89.000438179932},{"tm":208.822028103052,"cm":"{\n\"name\":\"error\"\n}","dr":98.1794833715455}]}
\ No newline at end of file
+{
+ "v": "4.8.0",
+ "meta": {
+ "g": "LottieFiles AE 3.6.0",
+ "a": "",
+ "k": "",
+ "d": "",
+ "tc": ""
+ },
+ "fr": 59.2332916259766,
+ "ip": 0,
+ "op": 308.001516397967,
+ "w": 650,
+ "h": 650,
+ "nm": "Lottie - Load",
+ "ddd": 0,
+ "assets": [],
+ "layers": [
+ {
+ "ddd": 0,
+ "ind": 1,
+ "ty": 4,
+ "nm": "Error - Dot",
+ "parent": 2,
+ "sr": 1,
+ "ks": {
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 11
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 10
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 4.972,
+ 125.264,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 4.972,
+ 124.264,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667,
+ 0.667,
+ 0.667
+ ],
+ "y": [
+ 1,
+ 1,
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333,
+ 0.333,
+ 0.333
+ ],
+ "y": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "t": 249.001,
+ "s": [
+ 0,
+ 0,
+ 100
+ ]
+ },
+ {
+ "t": 258.001270229466,
+ "s": [
+ 100,
+ 100,
+ 100
+ ]
+ }
+ ],
+ "ix": 6
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "d": 1,
+ "ty": "el",
+ "s": {
+ "a": 0,
+ "k": [
+ 50,
+ 50
+ ],
+ "ix": 2
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 3
+ },
+ "nm": "Ellipse Path 1",
+ "mn": "ADBE Vector Shape - Ellipse",
+ "hd": false
+ },
+ {
+ "ty": "fl",
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "ix": 4
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 5
+ },
+ "r": 1,
+ "bm": 0,
+ "nm": "Fill 1",
+ "mn": "ADBE Vector Graphic - Fill",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": {
+ "a": 0,
+ "k": [
+ 4.972,
+ 124.264
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Ellipse 1",
+ "np": 3,
+ "cix": 2,
+ "bm": 0,
+ "ix": 1,
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 208.001024060965,
+ "op": 308.001516397967,
+ "st": 208.001024060965,
+ "bm": 0
+ },
+ {
+ "ddd": 0,
+ "ind": 2,
+ "ty": 4,
+ "nm": "Error - Line",
+ "sr": 1,
+ "ks": {
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 11
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 10
+ },
+ "p": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "t": 248.001,
+ "s": [
+ 325,
+ 325,
+ 0
+ ],
+ "to": [
+ 3.333,
+ 0,
+ 0
+ ],
+ "ti": [
+ 3,
+ 0,
+ 0
+ ]
+ },
+ {
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "t": 253.001,
+ "s": [
+ 345,
+ 325,
+ 0
+ ],
+ "to": [
+ -3,
+ 0,
+ 0
+ ],
+ "ti": [
+ -0.333,
+ 0,
+ 0
+ ]
+ },
+ {
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "t": 258.001,
+ "s": [
+ 307,
+ 325,
+ 0
+ ],
+ "to": [
+ 0.333,
+ 0,
+ 0
+ ],
+ "ti": [
+ -3,
+ 0,
+ 0
+ ]
+ },
+ {
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "t": 263.001,
+ "s": [
+ 347,
+ 325,
+ 0
+ ],
+ "to": [
+ 3,
+ 0,
+ 0
+ ],
+ "ti": [
+ 3.667,
+ 0,
+ 0
+ ]
+ },
+ {
+ "t": 268.001319463166,
+ "s": [
+ 325,
+ 325,
+ 0
+ ]
+ }
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ],
+ "ix": 6
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ind": 0,
+ "ty": "sh",
+ "ix": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [
+ [
+ -160.675,
+ 0
+ ],
+ [
+ 0,
+ -165.401
+ ],
+ [
+ 153.249,
+ 0
+ ],
+ [
+ 0,
+ 0
+ ]
+ ],
+ "o": [
+ [
+ 174.852,
+ 0
+ ],
+ [
+ 0,
+ 178.228
+ ],
+ [
+ 0,
+ 0.675
+ ],
+ [
+ 0,
+ 0
+ ]
+ ],
+ "v": [
+ [
+ -3.376,
+ -305.148
+ ],
+ [
+ 305.148,
+ -0.675
+ ],
+ [
+ 4.726,
+ 304.473
+ ],
+ [
+ 4.726,
+ -151.224
+ ]
+ ],
+ "c": false
+ },
+ "ix": 2
+ },
+ "nm": "Path 1",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ },
+ {
+ "ty": "st",
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "ix": 3
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 4
+ },
+ "w": {
+ "a": 0,
+ "k": 30,
+ "ix": 5
+ },
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "bm": 0,
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Shape 1",
+ "np": 3,
+ "cix": 2,
+ "bm": 0,
+ "ix": 1,
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tm",
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 222.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 258.001270229466,
+ "s": [
+ 85.75
+ ]
+ }
+ ],
+ "ix": 1
+ },
+ "e": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 222.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 258.001270229466,
+ "s": [
+ 100
+ ]
+ }
+ ],
+ "ix": 2
+ },
+ "o": {
+ "a": 0,
+ "k": 0,
+ "ix": 3
+ },
+ "m": 1,
+ "ix": 2,
+ "nm": "Trim Paths 1",
+ "mn": "ADBE Vector Filter - Trim",
+ "hd": false
+ }
+ ],
+ "ip": 208.001024060965,
+ "op": 308.001516397967,
+ "st": 208.001024060965,
+ "bm": 0
+ },
+ {
+ "ddd": 0,
+ "ind": 3,
+ "ty": 4,
+ "nm": "Error - Circle",
+ "sr": 1,
+ "ks": {
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 11
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 10
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 325,
+ 325,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ],
+ "ix": 6
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "d": 1,
+ "ty": "el",
+ "s": {
+ "a": 0,
+ "k": [
+ 610,
+ 610
+ ],
+ "ix": 2
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 3
+ },
+ "nm": "Ellipse Path 1",
+ "mn": "ADBE Vector Shape - Ellipse",
+ "hd": false
+ },
+ {
+ "ty": "st",
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "ix": 3
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 4
+ },
+ "w": {
+ "a": 0,
+ "k": 30,
+ "ix": 5
+ },
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "bm": 0,
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Ellipse 1",
+ "np": 3,
+ "cix": 2,
+ "bm": 0,
+ "ix": 1,
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tm",
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 209.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 258.001270229466,
+ "s": [
+ 0
+ ]
+ }
+ ],
+ "ix": 1
+ },
+ "e": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 209.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 258.001270229466,
+ "s": [
+ 100
+ ]
+ }
+ ],
+ "ix": 2
+ },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 209.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 258.001270229466,
+ "s": [
+ 0
+ ]
+ }
+ ],
+ "ix": 3
+ },
+ "m": 1,
+ "ix": 2,
+ "nm": "Trim Paths 1",
+ "mn": "ADBE Vector Filter - Trim",
+ "hd": false
+ }
+ ],
+ "ip": 208.001024060965,
+ "op": 308.001516397967,
+ "st": 208.001024060965,
+ "bm": 0
+ },
+ {
+ "ddd": 0,
+ "ind": 4,
+ "ty": 4,
+ "nm": "Success - Checkmark",
+ "sr": 1,
+ "ks": {
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 11
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 10
+ },
+ "p": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": 0,
+ "y": 1
+ },
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "t": 157.001,
+ "s": [
+ 325,
+ 325,
+ 0
+ ],
+ "to": [
+ 0,
+ -11,
+ 0
+ ],
+ "ti": [
+ 0,
+ 11,
+ 0
+ ]
+ },
+ {
+ "t": 171.000841896274,
+ "s": [
+ 325,
+ 259,
+ 0
+ ]
+ }
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ],
+ "ix": 6
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ind": 0,
+ "ty": "sh",
+ "ix": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0,
+ 0
+ ],
+ [
+ 0,
+ 0
+ ],
+ [
+ 184,
+ 0
+ ]
+ ],
+ "o": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0,
+ 0
+ ],
+ [
+ 0,
+ 0
+ ],
+ [
+ -205,
+ 0
+ ]
+ ],
+ "v": [
+ [
+ -141,
+ 75
+ ],
+ [
+ -45,
+ 171
+ ],
+ [
+ 264,
+ -153
+ ],
+ [
+ 0,
+ -305
+ ]
+ ],
+ "c": false
+ },
+ "ix": 2
+ },
+ "nm": "Path 1",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ },
+ {
+ "ty": "st",
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "ix": 3
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 4
+ },
+ "w": {
+ "a": 0,
+ "k": 30,
+ "ix": 5
+ },
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "bm": 0,
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Shape 1",
+ "np": 3,
+ "cix": 2,
+ "bm": 0,
+ "ix": 1,
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tm",
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 142.001,
+ "s": [
+ 100
+ ]
+ },
+ {
+ "t": 164.000807432684,
+ "s": [
+ 0
+ ]
+ }
+ ],
+ "ix": 1
+ },
+ "e": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 142.001,
+ "s": [
+ 100
+ ]
+ },
+ {
+ "t": 157.000772969094,
+ "s": [
+ 46.4
+ ]
+ }
+ ],
+ "ix": 2
+ },
+ "o": {
+ "a": 0,
+ "k": 0,
+ "ix": 3
+ },
+ "m": 1,
+ "ix": 2,
+ "nm": "Trim Paths 2",
+ "mn": "ADBE Vector Filter - Trim",
+ "hd": false
+ }
+ ],
+ "ip": 119.000585881033,
+ "op": 209.001028984335,
+ "st": 0,
+ "bm": 0
+ },
+ {
+ "ddd": 0,
+ "ind": 5,
+ "ty": 4,
+ "nm": "Success - Circle",
+ "sr": 1,
+ "ks": {
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 11
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 10
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 325,
+ 325,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ],
+ "ix": 6
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "d": 1,
+ "ty": "el",
+ "s": {
+ "a": 0,
+ "k": [
+ 610,
+ 610
+ ],
+ "ix": 2
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 3
+ },
+ "nm": "Ellipse Path 1",
+ "mn": "ADBE Vector Shape - Ellipse",
+ "hd": false
+ },
+ {
+ "ty": "st",
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "ix": 3
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 4
+ },
+ "w": {
+ "a": 0,
+ "k": 30,
+ "ix": 5
+ },
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "bm": 0,
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Ellipse 1",
+ "np": 3,
+ "cix": 2,
+ "bm": 0,
+ "ix": 1,
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tm",
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 119.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 164.000807432684,
+ "s": [
+ 0
+ ]
+ }
+ ],
+ "ix": 1
+ },
+ "e": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 119.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 164.000807432684,
+ "s": [
+ 100
+ ]
+ }
+ ],
+ "ix": 2
+ },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 119.001,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 164.000807432684,
+ "s": [
+ 0
+ ]
+ }
+ ],
+ "ix": 3
+ },
+ "m": 1,
+ "ix": 2,
+ "nm": "Trim Paths 1",
+ "mn": "ADBE Vector Filter - Trim",
+ "hd": false
+ }
+ ],
+ "ip": 119.000585881033,
+ "op": 209.001028984335,
+ "st": 119.000585881033,
+ "bm": 0
+ },
+ {
+ "ddd": 0,
+ "ind": 6,
+ "ty": 4,
+ "nm": "Loading - Circle",
+ "sr": 1,
+ "ks": {
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 11
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 10
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 325,
+ 325,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ],
+ "ix": 6
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "d": 1,
+ "ty": "el",
+ "s": {
+ "a": 0,
+ "k": [
+ 610,
+ 610
+ ],
+ "ix": 2
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 3
+ },
+ "nm": "Ellipse Path 1",
+ "mn": "ADBE Vector Shape - Ellipse",
+ "hd": false
+ },
+ {
+ "ty": "st",
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "ix": 3
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 4
+ },
+ "w": {
+ "a": 0,
+ "k": 30,
+ "ix": 5
+ },
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "bm": 0,
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 2
+ },
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Ellipse 1",
+ "np": 3,
+ "cix": 2,
+ "bm": 0,
+ "ix": 1,
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tm",
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 0,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 60,
+ "s": [
+ 25
+ ]
+ },
+ {
+ "t": 119.000585881033,
+ "s": [
+ 100
+ ]
+ }
+ ],
+ "ix": 1
+ },
+ "e": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 0.708
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 0,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0.861
+ ]
+ },
+ "t": 60,
+ "s": [
+ 75
+ ]
+ },
+ {
+ "t": 119.000585881033,
+ "s": [
+ 100
+ ]
+ }
+ ],
+ "ix": 2
+ },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "i": {
+ "x": [
+ 0.667
+ ],
+ "y": [
+ 1
+ ]
+ },
+ "o": {
+ "x": [
+ 0.333
+ ],
+ "y": [
+ 0
+ ]
+ },
+ "t": 0,
+ "s": [
+ 0
+ ]
+ },
+ {
+ "t": 119.000585881033,
+ "s": [
+ 360
+ ]
+ }
+ ],
+ "ix": 3
+ },
+ "m": 1,
+ "ix": 2,
+ "nm": "Trim Paths 1",
+ "mn": "ADBE Vector Filter - Trim",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 122.000600651143,
+ "st": 0,
+ "bm": 0
+ }
+ ],
+ "markers": [
+ {
+ "tm": 0,
+ "cm": "spinner",
+ "dr": 118.000580957663
+ },
+ {
+ "tm": 119.000585881033,
+ "cm": "success",
+ "dr": 89.000438179932
+ },
+ {
+ "tm": 208.822028103052,
+ "cm": "error",
+ "dr": 98.1794833715455
+ }
+ ]
+}
\ No newline at end of file
diff --git a/comwell_key_app/assets/translations/da-DK.json b/comwell_key_app/assets/translations/da-DK.json
index e19f083d..2f09a939 100644
--- a/comwell_key_app/assets/translations/da-DK.json
+++ b/comwell_key_app/assets/translations/da-DK.json
@@ -75,8 +75,6 @@
"booking_not_found_button": "Prøv igen",
"booking_not_found_cancel": "Annuller",
-
- "get_bill": "Hent kvittering",
"save": "Gem",
"zipCode": "Postnummer",
"city": "By",
@@ -84,8 +82,14 @@
"delete_profile_title": "Du er ved at slette din profil",
"delete_profile_description": "Når du sletter din profil, mister du overblik over tidligere ophold samt dine Comwell Club point",
"delete_profile_button": "Slet profil",
- "delete_profile_cancel": "Annuller"
-
-
+ "delete_profile_cancel": "Annuller",
+ "check_in_loading_title": "Finder dit værelse...",
+ "check_in_room_found_title": "Værelse fundet...",
+ "check_in_your_digital_card_title": "Dit Digitale Nøglekort",
+ "check_in_your_digital_card_room_prefix": "Værelse",
+ "check_in_your_digital_card_subtitle": "Brug din mobiltelefon til at åbne værelset op. Du skal ikke længere checke ind i receptionen.",
+ "check_in_your_digital_card_nb": "NB: Ønsker du et fysisk nøglekort, kan du altid gå i receptionen og få det udleveret.",
+ "check_in_error_title": "Værelse ikke fundet...",
+ "check_in_error_subtitle": "Vi fandt ikke dit værelse. Du bedes henvende dig i receptionen."
}
\ No newline at end of file
diff --git a/comwell_key_app/assets/translations/en-US.json b/comwell_key_app/assets/translations/en-US.json
index d3eac593..704d7df4 100644
--- a/comwell_key_app/assets/translations/en-US.json
+++ b/comwell_key_app/assets/translations/en-US.json
@@ -74,7 +74,6 @@
"booking_not_found_subtitle": "We could not find a booking with the information you provided.",
"booking_not_found_button": "Try again",
"booking_not_found_cancel": "Cancel",
- "get_bill": "Get bill",
"save": "Save",
"zipCode": "Zip code",
"city": "City",
@@ -82,5 +81,12 @@
"delete_profile_title": "You are about to delete your profile",
"delete_profile_description": "Are you sure you want to delete your profile? This action cannot be undone.",
"delete_profile_button": "Delete profile",
- "delete_profile_cancel": "Cancel"
+ "delete_profile_cancel": "Cancel",
+ "check_in_loading_title": "Finder dit værelse...",
+ "check_in_room_found_title": "Værelse fundet...",
+ "check_in_your_digital_card_title": "Dit Digitale Nøglekort",
+ "check_in_your_digital_card_subtitle": "Brug din mobiltelefon til at åbne værelset op. Du skal ikke længere checke ind i receptionen.",
+ "check_in_your_digital_card_nb": "NB: Ønsker du et fysisk nøglekort, kan du altid gå i receptionen og få det udleveret.",
+ "check_in_error_title": "Værelse ikke fundet...",
+ "check_in_error_subtitle": "Vi fandt ikke dit værelse. Du bedes henvende dig i receptionen."
}
\ No newline at end of file
diff --git a/comwell_key_app/lib/check_in/bloc/check_in_cubit.dart b/comwell_key_app/lib/check_in/bloc/check_in_cubit.dart
new file mode 100644
index 00000000..35be5bf9
--- /dev/null
+++ b/comwell_key_app/lib/check_in/bloc/check_in_cubit.dart
@@ -0,0 +1,18 @@
+import 'package:bloc/bloc.dart';
+import 'package:comwell_key_app/check_in/bloc/check_in_state.dart';
+
+class CheckInCubit extends Cubit<CheckInState> {
+ CheckInCubit() : super(CheckInStateInitial()) {
+ Future.delayed(const Duration(seconds: 1), () {
+ emit(CheckInStateLoading());
+ startLoading();
+ });
+ }
+
+ Future<void> startLoading() async {
+ await Future.delayed(const Duration(seconds: 5));
+ emit(CheckInStateRoomFound());
+ await Future.delayed(const Duration(seconds: 2));
+ emit(CheckInStateYourDigitalKeyCard("2000"));
+ }
+}
diff --git a/comwell_key_app/lib/check_in/bloc/check_in_state.dart b/comwell_key_app/lib/check_in/bloc/check_in_state.dart
new file mode 100644
index 00000000..43f00ccf
--- /dev/null
+++ b/comwell_key_app/lib/check_in/bloc/check_in_state.dart
@@ -0,0 +1,36 @@
+import 'package:comwell_key_app/common/components/generic_dialog.dart';
+import 'package:easy_localization/easy_localization.dart';
+
+abstract class CheckInState {
+ final String title;
+ final String subtitle;
+
+ CheckInState(this.title, this.subtitle);
+}
+
+class CheckInStateInitial extends CheckInState {
+ CheckInStateInitial() : super("", "");
+}
+
+class CheckInStateLoading extends CheckInState {
+ CheckInStateLoading() : super("check_in_loading_title".tr(), "");
+}
+
+class CheckInStateRoomFound extends CheckInState {
+ CheckInStateRoomFound() : super("check_in_room_found_title".tr(), "");
+}
+
+class CheckInStateYourDigitalKeyCard extends CheckInState {
+ final String roomNumber;
+
+ CheckInStateYourDigitalKeyCard(this.roomNumber)
+ : super("check_in_your_digital_card_title".tr(),
+ "check_in_your_digital_card_subtitle".tr());
+}
+
+class CheckInStateError extends CheckInState {
+ final String errorMessage;
+
+ CheckInStateError(this.errorMessage)
+ : super("check_in_error_title".tr(), "check_in_error_subtitle".tr());
+}
diff --git a/comwell_key_app/lib/check_in/check_in_page.dart b/comwell_key_app/lib/check_in/check_in_page.dart
new file mode 100644
index 00000000..1bff4351
--- /dev/null
+++ b/comwell_key_app/lib/check_in/check_in_page.dart
@@ -0,0 +1,220 @@
+import 'package:comwell_key_app/check_in/bloc/check_in_cubit.dart';
+import 'package:comwell_key_app/check_in/bloc/check_in_state.dart';
+import 'package:comwell_key_app/utils/lottie_utils.dart';
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+import 'package:lottie/lottie.dart';
+
+class CheckInPage extends StatefulWidget {
+ const CheckInPage({super.key});
+
+ @override
+ State<CheckInPage> createState() => _CheckInPageState();
+}
+
+class _CheckInPageState extends State<CheckInPage>
+ with SingleTickerProviderStateMixin {
+ var animationDone = false;
+ late final LottieComposition loadingComposition;
+ late final AnimationController animationController;
+
+ @override
+ void initState() {
+ animationController = AnimationController(vsync: this);
+ super.initState();
+ }
+
+ @override
+ void dispose() {
+ animationController.dispose();
+ super.dispose();
+ }
+
+ void onAnimationEnd() {
+ playLoading();
+ }
+
+ void playLoading() {
+ loadingComposition.playBetween(animationController, "spinner",
+ markerEnd: "success", repeat: true);
+ }
+
+ void playError() {
+ loadingComposition.playBetween(animationController, "error");
+ }
+
+ void playSuccess() {
+ loadingComposition.playBetween(animationController, "success",
+ markerEnd: "error");
+ }
+
+ double getCardPosition(BuildContext context) {
+ final mq = MediaQuery.of(context);
+ final cubit = context.read<CheckInCubit>();
+ final state = cubit.state;
+ final padding = mq.viewPadding;
+ final height = mq.size.height;
+ final startPosition = height - padding.bottom - padding.top - 100;
+ switch (state) {
+ case CheckInStateLoading _:
+ case CheckInStateError _:
+ case CheckInStateRoomFound _:
+ return height / 2 - 100;
+ case CheckInStateYourDigitalKeyCard _:
+ return 100;
+ case _:
+ return startPosition;
+ }
+ }
+
+ Widget getCardContent(BuildContext context) {
+ final cubit = context.read<CheckInCubit>();
+ if (cubit.state is CheckInStateYourDigitalKeyCard) {
+ return Container(
+ decoration: BoxDecoration(
+ borderRadius: const BorderRadius.all(Radius.circular(30)),
+ border: Border.all(color: Colors.white)),
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Text(
+ "${"check_in_your_digital_card_room_prefix".tr()} ${(cubit.state as CheckInStateYourDigitalKeyCard).roomNumber}",
+ style: const TextStyle(color: Colors.white),
+ ),
+ ),
+ );
+ } else {
+ return Lottie.asset(
+ 'assets/animations/load_animation.json',
+ controller: animationController,
+ onLoaded: (composition) {
+ loadingComposition = composition;
+ animationController.duration = composition.duration;
+ },
+ fit: BoxFit.cover,
+ width: 64,
+ height: 64,
+ );
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final mq = MediaQuery.of(context);
+ return BlocConsumer<CheckInCubit, CheckInState>(listener: (context, state) {
+ switch (state) {
+ case CheckInStateLoading _:
+ playLoading();
+ case CheckInStateRoomFound _:
+ playSuccess();
+ case CheckInStateError _:
+ playError();
+ }
+ }, builder: (context, state) {
+ return Scaffold(
+ body: SafeArea(
+ child: Builder(builder: (context) {
+ final position = getCardPosition(context);
+ return Stack(
+ fit: StackFit.expand,
+ children: [
+ AnimatedPositioned(
+ duration: const Duration(milliseconds: 200),
+ top: position,
+ left: 16,
+ right: 16,
+ curve: Easing.linear,
+ onEnd: onAnimationEnd,
+ child: Column(
+ children: [
+ AspectRatio(
+ aspectRatio: 359 / 212,
+ child: Container(
+ alignment: Alignment.center,
+ decoration: const BoxDecoration(
+ color: Color(0xffAA8D65),
+ borderRadius:
+ BorderRadius.all(Radius.circular(15))),
+ child: getCardContent(context),
+ ),
+ ),
+ const SizedBox(height: 80),
+ AnimatedOpacity(
+ opacity: state is! CheckInStateInitial ? 1.0 : 0.0,
+ duration: const Duration(milliseconds: 1000),
+ child: Container(
+ alignment: Alignment.center,
+ width: mq.size.width,
+ child: Column(
+ children: [
+ Text(state.title),
+ const SizedBox(height: 12),
+ Text(
+ state.subtitle,
+ textAlign: TextAlign.center,
+ style: Theme.of(context)
+ .textTheme
+ .bodySmall
+ ?.copyWith(color: Colors.black45),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ if (state is CheckInStateYourDigitalKeyCard)
+ Align(
+ alignment: Alignment.bottomCenter,
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Padding(
+ padding:
+ const EdgeInsets.symmetric(horizontal: 16.0),
+ child: Text("check_in_your_digital_card_nb".tr(),
+ textAlign: TextAlign.center,
+ style: Theme.of(context)
+ .textTheme
+ .bodySmall
+ ?.copyWith(color: Colors.black45)),
+ ),
+ const SizedBox(height: 30),
+ const Divider(
+ color: Colors.black12,
+ height: 0,
+ ),
+ Row(
+ children: [
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.all(16.0),
+ child: ElevatedButton(
+ onPressed: () {},
+ style: const ButtonStyle(
+ backgroundColor:
+ WidgetStatePropertyAll(
+ Color(0xffAA8D65)),
+ foregroundColor:
+ WidgetStatePropertyAll(
+ Colors.white)),
+ child: const Padding(
+ padding: EdgeInsets.symmetric(
+ vertical: 16.0),
+ child: Text("Done"),
+ )),
+ ),
+ ),
+ ],
+ ),
+ ],
+ ))
+ ],
+ );
+ }),
+ ),
+ );
+ });
+ }
+}
diff --git a/comwell_key_app/lib/routing/app_router.dart b/comwell_key_app/lib/routing/app_router.dart
index 493b7726..b985f7fb 100644
--- a/comwell_key_app/lib/routing/app_router.dart
+++ b/comwell_key_app/lib/routing/app_router.dart
@@ -1,5 +1,7 @@
import 'package:comwell_key_app/authentication/authentication_repository.dart';
import 'package:comwell_key_app/authentication/bloc/authentication_bloc.dart';
+import 'package:comwell_key_app/check_in/bloc/check_in_cubit.dart';
+import 'package:comwell_key_app/check_in/check_in_page.dart';
import 'package:comwell_key_app/find_booking/find_booking_page.dart';
import 'package:comwell_key_app/find_booking/loading_page.dart';
import 'package:comwell_key_app/home/home_page.dart';
@@ -14,6 +16,7 @@ import 'package:comwell_key_app/profile_settings/profile_settings_page.dart';
import 'package:comwell_key_app/redeem_debug/redeem_page.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/utils/stream_to_listenable.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
@@ -52,7 +55,6 @@ GoRouter goRouter(AuthenticationBloc authBloc) {
return null;
},
routes: <RouteBase>[
-
GoRoute(
path: '/loading_page',
name: AppRoutes.loadingPage.name,
@@ -64,6 +66,15 @@ GoRouter goRouter(AuthenticationBloc authBloc) {
name: AppRoutes.findBooking.name,
builder: (context, state) => const FindBookingPage(),
),
+ GoRoute(
+ path: "/check_in",
+ name: AppRoutes.checkIn.name,
+ builder: (context, state) {
+ return BlocProvider(
+ create: (context) => CheckInCubit(),
+ child: const CheckInPage(),
+ );
+ }),
GoRoute(
path: "/oauthredirect",
name: AppRoutes.overview.name,
diff --git a/comwell_key_app/lib/routing/app_routes.dart b/comwell_key_app/lib/routing/app_routes.dart
index 0ae92ad0..a6b0cfa5 100644
--- a/comwell_key_app/lib/routing/app_routes.dart
+++ b/comwell_key_app/lib/routing/app_routes.dart
@@ -12,7 +12,8 @@ enum AppRoutes {
overview,
profileSettings,
bookingDetails,
-findBooking,
-loadingPage,
-changePassword,
+ findBooking,
+ loadingPage,
+ changePassword,
+ checkIn,
}
diff --git a/comwell_key_app/lib/utils/lottie_utils.dart b/comwell_key_app/lib/utils/lottie_utils.dart
new file mode 100644
index 00000000..ecab07fa
--- /dev/null
+++ b/comwell_key_app/lib/utils/lottie_utils.dart
@@ -0,0 +1,18 @@
+import 'package:flutter/animation.dart';
+import 'package:lottie/lottie.dart';
+
+extension LottieUtils on LottieComposition {
+ void playBetween(AnimationController animationController, String markerStart,
+ {String markerEnd = "", bool repeat = false}) {
+ final startMarker = getMarker(markerStart)!.start;
+ final endMarker = markerEnd == "" ? 1.0 : getMarker(markerEnd)!.start;
+ final duration = this.duration * (endMarker - startMarker).abs();
+ animationController.value = startMarker;
+ if (repeat) {
+ animationController.repeat(
+ min: startMarker, max: endMarker, period: duration);
+ } else {
+ animationController.animateTo(endMarker, duration: duration);
+ }
+ }
+}