From 98fad879f6f8cff0b3dcaf2a332261cf9a92ade4 Mon Sep 17 00:00:00 2001 From: grata Date: Mon, 3 Apr 2023 14:10:18 +0200 Subject: [PATCH 1/3] added data.json for soring waypoints data --- package-lock.json | 332 +++++++++++++++++++++++++++---- package.json | 2 + src/app/home/home.component.css | 12 +- src/app/home/home.component.html | 24 ++- src/app/home/home.component.ts | 48 +++-- src/assets/tailwind.png | Bin 0 -> 22488 bytes 6 files changed, 360 insertions(+), 58 deletions(-) create mode 100644 src/assets/tailwind.png diff --git a/package-lock.json b/package-lock.json index 7bd0945..6fed08c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@angular/platform-browser-dynamic": "^15.0.0", "@angular/router": "^15.0.0", "daisyui": "^2.49.0", + "qrcode": "^1.5.1", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.12.0" @@ -26,6 +27,7 @@ "@angular/cli": "~15.0.4", "@angular/compiler-cli": "^15.0.0", "@types/jasmine": "~4.3.0", + "@types/qrcode": "^1.5.0", "jasmine-core": "~4.5.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.1.0", @@ -3300,6 +3302,15 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "node_modules/@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -3754,7 +3765,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -4215,7 +4225,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } @@ -4951,6 +4960,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -5059,6 +5076,11 @@ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, + "node_modules/dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -5175,8 +5197,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -5187,6 +5208,11 @@ "node": ">= 4" } }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -5774,7 +5800,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -5927,7 +5952,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6623,7 +6647,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -7375,7 +7398,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -8869,7 +8891,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -8884,7 +8905,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -8933,7 +8953,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -9148,7 +9167,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -9243,6 +9261,14 @@ "node": ">=8" } }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/postcss": { "version": "8.4.21", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", @@ -9537,6 +9563,114 @@ "node": ">=0.9" } }, + "node_modules/qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/qrcode/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -9795,7 +9929,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9809,6 +9942,11 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -10332,8 +10470,7 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -10696,7 +10833,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10710,7 +10846,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11682,6 +11817,11 @@ "which": "bin/which" } }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -14075,6 +14215,15 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -14466,8 +14615,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -14805,8 +14953,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-css": { "version": "2.0.1", @@ -15361,6 +15508,11 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -15441,6 +15593,11 @@ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, + "dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -15533,8 +15690,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -15542,6 +15698,11 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -16018,7 +16179,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -16121,8 +16281,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { "version": "1.2.0", @@ -16650,8 +16809,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", @@ -17215,7 +17373,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -18372,7 +18529,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -18381,7 +18537,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -18416,8 +18571,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pacote": { "version": "15.0.6", @@ -18588,8 +18742,7 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -18658,6 +18811,11 @@ "find-up": "^4.0.0" } }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, "postcss": { "version": "8.4.21", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", @@ -18835,6 +18993,92 @@ "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, + "qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -19035,8 +19279,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { "version": "2.0.2", @@ -19044,6 +19287,11 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -19428,8 +19676,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "setprototypeof": { "version": "1.2.0", @@ -19728,7 +19975,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -19739,7 +19985,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -20415,6 +20660,11 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", diff --git a/package.json b/package.json index 0ca5806..147b239 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@angular/platform-browser-dynamic": "^15.0.0", "@angular/router": "^15.0.0", "daisyui": "^2.49.0", + "qrcode": "^1.5.1", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.12.0" @@ -28,6 +29,7 @@ "@angular/cli": "~15.0.4", "@angular/compiler-cli": "^15.0.0", "@types/jasmine": "~4.3.0", + "@types/qrcode": "^1.5.0", "jasmine-core": "~4.5.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.1.0", diff --git a/src/app/home/home.component.css b/src/app/home/home.component.css index caf329e..8f55562 100644 --- a/src/app/home/home.component.css +++ b/src/app/home/home.component.css @@ -3,6 +3,10 @@ align-items: center; justify-content: center; flex-direction: column; + position: absolute; + top: 35%; + left: 50%; + transform: translate(-50%, -50%); } input { @@ -11,11 +15,17 @@ input { align-items: center; } -.list { +#list { width: 500px; justify-content: center; align-items: center; align-content: center; + margin-top: 10px; + +} + +#list > li { + } .bg-image { diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index 1564364..aad2597 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -5,10 +5,28 @@ (keydown)="selezionaSuggerimento($event)" placeholder="Type here" class="input input-bordered input-primary w-full max-w-xs"> - + + + + QR Code diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts index 3d44e1b..a0d74e9 100644 --- a/src/app/home/home.component.ts +++ b/src/app/home/home.component.ts @@ -1,5 +1,6 @@ import {AfterContentInit, AfterViewInit, Component, ElementRef, OnInit, ViewChild} from '@angular/core'; import {debounceTime, distinctUntilChanged, fromEvent, Subject} from "rxjs"; +import * as QRCode from 'qrcode'; interface Luogo { nome: string; @@ -19,6 +20,7 @@ export class HomeComponent implements OnInit, AfterViewInit { latitude: number | undefined; longitude: number | undefined; backgroundColor: string | undefined; + qrCodeImage: string | undefined; luoghi: Luogo[] = [ {nome: 'Locarno', latitudine: 46.1704, longitudine: 8.7931}, @@ -30,11 +32,37 @@ export class HomeComponent implements OnInit, AfterViewInit { luogoSelezionato: string = ''; suggerimentoAttivo: boolean = false; suggerimento: string = ''; - completamento: string = 'ciao'; + completamento: string = ''; @ViewChild('myInput') myInput?: ElementRef; + @ViewChild('canvas') canvasRef: ElementRef | undefined; + canvas: any; + ctx: any; + img: any; ngAfterViewInit() { + + this.canvas = this.canvasRef?.nativeElement; + this.ctx = this.canvas.getContext('2d'); + + this.img = new Image(); + this.img.onload = () => { + this.ctx.drawImage(this.img, 0, 0); + const qrCode = new Image(); + if (typeof this.qrCodeImage === "string") { + qrCode.src = this.qrCodeImage; + } + qrCode.onload = () => { + const qrCodeSize = 100; + const margin = 20; + const x = this.canvas.width - qrCodeSize - margin; + const y = this.canvas.height - qrCodeSize - margin; + this.ctx.drawImage(qrCode, x, y, qrCodeSize, qrCodeSize); + } + } + this.img.src = 'src/assets/img/mountains.png'; + + fromEvent(this.myInput?.nativeElement, 'input') .pipe( // debounceTime(500), decommentarlo se bisogna fare una chiamata http @@ -56,7 +84,6 @@ export class HomeComponent implements OnInit, AfterViewInit { if (this.luoghiFiltrati.length > 0) { this.suggerimentoAttivo = true; this.suggerimento = this.luoghiFiltrati[0].nome; - this.completamento = stringDifference(nome, this.suggerimento); } else { this.suggerimentoAttivo = false; @@ -81,19 +108,14 @@ export class HomeComponent implements OnInit, AfterViewInit { } ngOnInit(): void { - + const text = 'https://aramisgrata.ch'; // sostituisci con la tua stringa + QRCode.toDataURL(text, { errorCorrectionLevel: 'H' }, (err, url) => { + this.qrCodeImage = url; + }); } -} - -function stringDifference(str1: string, str2: string): string { - let diff = ''; - for (let i = 0; i < str2.length; i++) { - if (str1[i] !== str2[i]) { - diff += str2[i]; - } + luoghiNear() { + return null; } - return diff; } - diff --git a/src/assets/tailwind.png b/src/assets/tailwind.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd26ea7df62ee495df7dbf197f88f61a1b1b65a GIT binary patch literal 22488 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 literal 0 HcmV?d00001 From f0d5e72d656a66dd51f24b6435c6482d802449a5 Mon Sep 17 00:00:00 2001 From: grata Date: Mon, 3 Apr 2023 14:18:10 +0200 Subject: [PATCH 2/3] pls work --- src/app/home/home.component.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts index 45aaefc..8360af0 100644 --- a/src/app/home/home.component.ts +++ b/src/app/home/home.component.ts @@ -47,6 +47,10 @@ export class HomeComponent implements OnInit, AfterViewInit, OnDestroy { ngOnInit(): void { this.subs.push(this.service.getLocation("Lugano").subscribe(val => console.log(val))) + const text = 'https://aramisgrata.ch'; // sostituisci con la tua stringa + QRCode.toDataURL(text, { errorCorrectionLevel: 'H' }, (err, url) => { + this.qrCodeImage = url; + }); } ngOnDestroy() { @@ -121,12 +125,6 @@ export class HomeComponent implements OnInit, AfterViewInit, OnDestroy { } } - ngOnInit(): void { - const text = 'https://aramisgrata.ch'; // sostituisci con la tua stringa - QRCode.toDataURL(text, { errorCorrectionLevel: 'H' }, (err, url) => { - this.qrCodeImage = url; - }); - } luoghiNear() { return null; From be9bbe76cf2ec844ab2ffac873403018954777ad Mon Sep 17 00:00:00 2001 From: grata Date: Mon, 3 Apr 2023 14:19:46 +0200 Subject: [PATCH 3/3] pls work --- src/app/app.module.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 8b68d9a..2e30537 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -11,12 +11,13 @@ import {HttpClientModule} from "@angular/common/http"; import { SafePipe } from './pipes/safe.pipe'; @NgModule({ - declarations: [ - AppComponent, - HomeComponent, - ListComponent, - DetailComponent - ], + declarations: [ + AppComponent, + HomeComponent, + ListComponent, + DetailComponent, + SafePipe + ], imports: [ BrowserModule, AppRoutingModule,