From d66a4b71b8d3c67ead865878f75c03f7a7ade424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Luk=C4=8Da?= <129056533+tom22077@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:40:42 +0100 Subject: [PATCH] add IPCalculator View (#557) * create IPCalculator View + add cidr_tools package * fixed translation and comma separated ip as placeholder --- frontend/package-lock.json | 28 ++++- frontend/package.json | 1 + frontend/src/App.vue | 3 + frontend/src/lang/translations/en.json | 23 +++- frontend/src/router/index.js | 10 +- frontend/src/views/IPCalculatorView.vue | 139 ++++++++++++++++++++++++ 6 files changed, 196 insertions(+), 8 deletions(-) create mode 100644 frontend/src/views/IPCalculatorView.vue diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 326c5e1..cf72560 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -16,6 +16,7 @@ "@vojtechlanka/vue-tags-input": "^3.1.1", "bootstrap": "^5.3.7", "bootswatch": "^5.3.7", + "cidr-tools": "^11.0.3", "flag-icons": "^7.3.2", "ip-address": "^10.0.1", "is-cidr": "^5.1.1", @@ -920,7 +921,6 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -1492,6 +1492,18 @@ "node": ">=14" } }, + "node_modules/cidr-tools": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/cidr-tools/-/cidr-tools-11.0.3.tgz", + "integrity": "sha512-7p0rp7B2P+nZfBkJlrQzUMDyUHeYK2h/XCJY80VUl1v5oxwLxQjZMy39BXVOXugwAX67l0oJ/QQ6OhANgUtUbw==", + "license": "BSD-2-Clause", + "dependencies": { + "ip-bigint": "^8.2.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/clone-regexp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", @@ -1706,6 +1718,15 @@ "node": ">= 12" } }, + "node_modules/ip-bigint": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/ip-bigint/-/ip-bigint-8.2.2.tgz", + "integrity": "sha512-wPoOpHigOtoY29UCFA0L82cJVFcT7M+TsrgipUVpFw7HV9LpLEuNXCymt3623jzHPlIZzFaCyaVf9VACssFYew==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=18" + } + }, "node_modules/ip-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", @@ -2047,7 +2068,6 @@ "integrity": "sha512-FvQdkn2dZ8DGiLgi0Uf4zsj7r/BsiLImNa5QJ10eZalY6NfZyjrmWGFcuCN5jNwlDlXFJnftauv+UtvBKLvepQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@bufbuild/protobuf": "^2.5.0", "buffer-builder": "^0.2.0", @@ -2539,7 +2559,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -2581,7 +2600,6 @@ "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -2675,7 +2693,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -2688,7 +2705,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz", "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.22", "@vue/compiler-sfc": "3.5.22", diff --git a/frontend/package.json b/frontend/package.json index f9d54a8..e3cb69d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,6 +16,7 @@ "@vojtechlanka/vue-tags-input": "^3.1.1", "bootstrap": "^5.3.7", "bootswatch": "^5.3.7", + "cidr-tools": "^11.0.3", "flag-icons": "^7.3.2", "ip-address": "^10.0.1", "is-cidr": "^5.1.1", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 7908168..8810855 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -133,6 +133,9 @@ const userDisplayName = computed(() => { +