diff --git a/.env b/.env new file mode 100644 index 0000000..45091ed --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_API_BASE_URL=https://45.146.164.63:8080 \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index b08486c..0000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# wn-screen-frontend - -## Project setup -``` -npm install -``` - -### Compiles and hot-reloads for development -``` -npm run serve -``` - -### Compiles and minifies for production -``` -npm run build -``` - -### Lints and fixes files -``` -npm run lint -``` - -### Customize configuration -See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/captain-definition b/captain-definition new file mode 100644 index 0000000..a83199c --- /dev/null +++ b/captain-definition @@ -0,0 +1,8 @@ +{ + "schemaVersion": 2, + "dockerfileLines": [ + "FROM nginx:alpine", + "COPY ./dist /usr/share/nginx/html", + "EXPOSE 80" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf6d6a2..8e6f2c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,22 @@ { - "name": "wn-screen-frontend", + "name": "WhiteNights", "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "wn-screen-frontend", + "name": "WhiteNights", "version": "0.1.0", "dependencies": { + "@improbable-eng/grpc-web": "^0.15.0", + "axios": "^1.8.4", "core-js": "^3.8.3", + "google-protobuf": "^3.21.4", + "grpc-web": "^1.5.0", + "js-cookie": "^3.0.5", + "leaflet": "^1.9.4", + "leaflet-geometryutil": "^0.10.3", + "leaflet-rotatedmarker": "^0.2.0", "vue": "^3.2.13" }, "devDependencies": { @@ -1759,6 +1767,17 @@ "deprecated": "Use @eslint/object-schema instead", "dev": true }, + "node_modules/@improbable-eng/grpc-web": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.15.0.tgz", + "integrity": "sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==", + "dependencies": { + "browser-headers": "^0.4.1" + }, + "peerDependencies": { + "google-protobuf": "^3.14.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -3258,6 +3277,11 @@ "lodash": "^4.17.14" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -3304,6 +3328,16 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-loader": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", @@ -3532,6 +3566,11 @@ "node": ">=8" } }, + "node_modules/browser-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", + "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==" + }, "node_modules/browserslist": { "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", @@ -3625,7 +3664,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -3934,6 +3972,17 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -4695,6 +4744,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -4858,7 +4915,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -4987,7 +5043,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -4996,7 +5051,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -5011,7 +5065,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -5019,6 +5072,20 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -5899,7 +5966,6 @@ "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true, "funding": [ { "type": "individual", @@ -5915,6 +5981,20 @@ } } }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -5991,7 +6071,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6024,7 +6103,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "dev": true, "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-define-property": "^1.0.1", @@ -6048,7 +6126,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -6137,11 +6214,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/google-protobuf": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -6155,6 +6236,11 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/grpc-web": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/grpc-web/-/grpc-web-1.5.0.tgz", + "integrity": "sha512-y1tS3BBIoiVSzKTDF3Hm7E8hV2n7YY7pO0Uo7depfWJqKzWE+SKr0jvHNIJsJJYILQlpYShpi/DRJJMbosgDMQ==" + }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -6201,7 +6287,20 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -6219,7 +6318,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -6830,6 +6928,14 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, "node_modules/js-message": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", @@ -6970,6 +7076,24 @@ "launch-editor": "^2.9.1" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/leaflet-geometryutil": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/leaflet-geometryutil/-/leaflet-geometryutil-0.10.3.tgz", + "integrity": "sha512-Qeas+KsnenE0Km/ydt8km3AqFe7kJhVwuLdbCYM2xe2epsxv5UFEaVJiagvP9fnxS8QvBNbm7DJlDA0tkKo9VA==", + "dependencies": { + "leaflet": "^1.6.0" + } + }, + "node_modules/leaflet-rotatedmarker": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/leaflet-rotatedmarker/-/leaflet-rotatedmarker-0.2.0.tgz", + "integrity": "sha512-yc97gxLXwbZa+Gk9VCcqI0CkvIBC9oNTTjFsHqq4EQvANrvaboib4UdeQLyTnEqDpaXHCqzwwVIDHtvz2mUiDg==" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -7292,7 +7416,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -7395,7 +7518,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -7404,7 +7526,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -8902,6 +9023,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -11738,7 +11864,8 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true + "dev": true, + "requires": {} }, "@babel/plugin-syntax-decorators": { "version": "7.25.9", @@ -12518,6 +12645,14 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@improbable-eng/grpc-web": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.15.0.tgz", + "integrity": "sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==", + "requires": { + "browser-headers": "^0.4.1" + } + }, "@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -13132,7 +13267,8 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz", "integrity": "sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==", - "dev": true + "dev": true, + "requires": {} }, "@vue/cli-service": { "version": "5.0.8", @@ -13608,7 +13744,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "8.3.4", @@ -13670,7 +13807,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "4.1.3", @@ -13763,6 +13901,11 @@ "lodash": "^4.17.14" } }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -13783,6 +13926,16 @@ "postcss-value-parser": "^4.2.0" } }, + "axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "babel-loader": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", @@ -13966,6 +14119,11 @@ "fill-range": "^7.1.1" } }, + "browser-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", + "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==" + }, "browserslist": { "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", @@ -14016,7 +14174,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, "requires": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -14243,6 +14400,14 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -14435,7 +14600,8 @@ "version": "6.4.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", - "dev": true + "dev": true, + "requires": {} }, "css-loader": { "version": "6.11.0", @@ -14603,7 +14769,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -14773,6 +14940,11 @@ "object-keys": "^1.1.1" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -14898,7 +15070,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, "requires": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -15002,14 +15173,12 @@ "es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" }, "es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" }, "es-module-lexer": { "version": "1.6.0", @@ -15021,11 +15190,21 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "requires": { "es-errors": "^1.3.0" } }, + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, "escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -15683,8 +15862,18 @@ "follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + } }, "forwarded": { "version": "0.2.0", @@ -15738,8 +15927,7 @@ "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -15763,7 +15951,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "dev": true, "requires": { "call-bind-apply-helpers": "^1.0.1", "es-define-property": "^1.0.1", @@ -15781,7 +15968,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, "requires": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -15845,11 +16031,15 @@ "slash": "^3.0.0" } }, + "google-protobuf": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" + }, "gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "graceful-fs": { "version": "4.2.11", @@ -15857,6 +16047,11 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "grpc-web": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/grpc-web/-/grpc-web-1.5.0.tgz", + "integrity": "sha512-y1tS3BBIoiVSzKTDF3Hm7E8hV2n7YY7pO0Uo7depfWJqKzWE+SKr0jvHNIJsJJYILQlpYShpi/DRJJMbosgDMQ==" + }, "gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -15890,8 +16085,15 @@ "has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } }, "hash-sum": { "version": "2.0.0", @@ -15903,7 +16105,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "requires": { "function-bind": "^1.1.2" } @@ -16104,7 +16305,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "ieee754": { "version": "1.2.1", @@ -16332,6 +16534,11 @@ "@sideway/pinpoint": "^2.0.0" } }, + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" + }, "js-message": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", @@ -16446,6 +16653,24 @@ "launch-editor": "^2.9.1" } }, + "leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "leaflet-geometryutil": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/leaflet-geometryutil/-/leaflet-geometryutil-0.10.3.tgz", + "integrity": "sha512-Qeas+KsnenE0Km/ydt8km3AqFe7kJhVwuLdbCYM2xe2epsxv5UFEaVJiagvP9fnxS8QvBNbm7DJlDA0tkKo9VA==", + "requires": { + "leaflet": "^1.6.0" + } + }, + "leaflet-rotatedmarker": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/leaflet-rotatedmarker/-/leaflet-rotatedmarker-0.2.0.tgz", + "integrity": "sha512-yc97gxLXwbZa+Gk9VCcqI0CkvIBC9oNTTjFsHqq4EQvANrvaboib4UdeQLyTnEqDpaXHCqzwwVIDHtvz2mUiDg==" + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -16707,8 +16932,7 @@ "math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" }, "mdn-data": { "version": "2.0.14", @@ -16783,14 +17007,12 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "requires": { "mime-db": "1.52.0" } @@ -17419,25 +17641,29 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-loader": { "version": "6.2.1", @@ -17524,7 +17750,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.2.0", @@ -17583,7 +17810,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -17839,6 +18067,11 @@ } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -19419,7 +19652,8 @@ "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -19521,7 +19755,8 @@ "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "dev": true + "dev": true, + "requires": {} }, "y18n": { "version": "5.0.8", diff --git a/package.json b/package.json index 1232c2e..6feb719 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "wn-screen-frontend", + "name": "WhiteNights", "version": "0.1.0", "private": true, "scripts": { @@ -8,7 +8,15 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "@improbable-eng/grpc-web": "^0.15.0", + "axios": "^1.8.4", "core-js": "^3.8.3", + "google-protobuf": "^3.21.4", + "grpc-web": "^1.5.0", + "js-cookie": "^3.0.5", + "leaflet": "^1.9.4", + "leaflet-geometryutil": "^0.10.3", + "leaflet-rotatedmarker": "^0.2.0", "vue": "^3.2.13" }, "devDependencies": { diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index df36fcf..0000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/public/index.html b/public/index.html index 3e5a139..4f9c214 100644 --- a/public/index.html +++ b/public/index.html @@ -1,15 +1,19 @@ - - - - + + + + + + <%= htmlWebpackPlugin.options.title %>
diff --git a/src/App.vue b/src/App.vue index 591a031..0db1eab 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,26 +1,32 @@ diff --git a/src/assets/fonts/Roboto-VariableFont_wdth.ttf b/src/assets/fonts/Roboto-VariableFont_wdth.ttf new file mode 100644 index 0000000..bba55f6 Binary files /dev/null and b/src/assets/fonts/Roboto-VariableFont_wdth.ttf differ diff --git a/src/assets/img/bridge.png b/src/assets/img/bridge.png new file mode 100644 index 0000000..4740cb8 Binary files /dev/null and b/src/assets/img/bridge.png differ diff --git a/src/assets/img/carrier.svg b/src/assets/img/carrier.svg new file mode 100644 index 0000000..6bb096f --- /dev/null +++ b/src/assets/img/carrier.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/img/get_new.svg b/src/assets/img/get_new.svg new file mode 100644 index 0000000..e3c4ad7 --- /dev/null +++ b/src/assets/img/get_new.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/img/gos.png b/src/assets/img/gos.png new file mode 100644 index 0000000..e94aca7 Binary files /dev/null and b/src/assets/img/gos.png differ diff --git a/src/assets/img/house.png b/src/assets/img/house.png new file mode 100644 index 0000000..c9c2aad Binary files /dev/null and b/src/assets/img/house.png differ diff --git a/src/assets/img/shop.png b/src/assets/img/shop.png new file mode 100644 index 0000000..01d8183 Binary files /dev/null and b/src/assets/img/shop.png differ diff --git a/src/assets/img/stop01.png b/src/assets/img/stop01.png new file mode 100644 index 0000000..e1ad07f Binary files /dev/null and b/src/assets/img/stop01.png differ diff --git a/src/assets/logo.png b/src/assets/logo.png deleted file mode 100644 index f3d2503..0000000 Binary files a/src/assets/logo.png and /dev/null differ diff --git a/src/assets/style/main.css b/src/assets/style/main.css new file mode 100644 index 0000000..2e266ae --- /dev/null +++ b/src/assets/style/main.css @@ -0,0 +1,960 @@ +:root { + --panel-offset: 320px; +} + +@font-face { + font-family: "Roboto"; + src: url(../fonts/Roboto-VariableFont_wdth.ttf) format("ttf"); +} + +body { + background: #000; + font-family: "Roboto", sans-serif; + overflow-y: hidden; +} + +* { + box-sizing: border-box; + user-select: none; +} + +.station-label-no-bg { + background: transparent !important; + border: none !important; + box-shadow: none !important; + font-size: 16px; + font-weight: 600; + color: #fff; + /* max-width: 200px; */ + padding: 0 !important; + /* text-wrap: revert; */ +} + +.station-label-no-bg:before { + display: none !important; +} + +.stopinfo { + z-index: 500; + position: absolute; + top: 0; + right: 0; + height: 100%; +} + +.stopinfo .bg { + height: 100%; + width: 500px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.container { + margin: auto 25px 25px 25px; + /* height: 100%; */ + /* background: #806c58; */ + background: rgb(125, 110, 92); + background: linear-gradient( + 0deg, + rgba(125, 110, 92, 1) 0%, + rgba(150, 138, 124, 1) 100% + ); + border-radius: 10px; + display: flex; + flex-direction: column; + /* gap: 15px; */ +} + +.container .img { + border-radius: 10px 10px 0 0; + border: 3px solid #806c58; + width: 100%; + height: 300px; + background-position: center center; + background-size: cover; + background-repeat: no-repeat; +} + +.stopname { + font-size: 22px; + font-weight: 600; + padding: 15px; + color: #fff; + background: rgb(187, 179, 170); + background: linear-gradient( + 180deg, + rgba(187, 179, 170, 1) 0%, + rgba(159, 148, 135, 1) 100% + ); + margin-bottom: 15px; +} + +.stopdescription { + font-size: 16px; + font-weight: 400; + padding: 0 15px 15px 15px; + color: #fff; +} + +.landmarks { + background: #806c58; + border-radius: 10px 10px 0 0; + height: 50px; + margin: 0 25px; + color: #fff; + font-size: 18px; + font-weight: 600; + display: flex; + align-items: center; + padding: 0 25px; + justify-content: center; + position: relative; +} + +.landmarks-arrow { + position: absolute; + left: 25px; + top: 18px; +} + +.stoparticles { + height: 50px; + color: #fff; + display: flex; + align-items: center; + justify-content: center; + margin-top: auto; + gap: 45px; + background: rgb(187, 179, 170); + background: linear-gradient( + 180deg, + rgba(187, 179, 170, 1) 0%, + rgba(159, 148, 135, 1) 100% + ); + border-radius: 0 0 10px 10px; +} + +.stoparticle-option { + color: #fff; + font-size: 18px; +} + +.description-button { + background: #000; + color: #fff; + border: none; + border-radius: 5px; + padding: 10px 15px; + font-size: 16px; + font-weight: 600; + cursor: pointer; + margin: 0 15px 15px 15px; +} + +.stop-buttons-container { + display: flex; + flex-direction: column; + /* gap: 20px; */ +} + +.stop-button { + border: none; + border-radius: 10px; + padding: 15px 15px; + font-size: 18px; + /* font-weight: 600; */ + cursor: pointer; + width: 100%; + margin-top: 15px; +} + +.white { + background: #fff; + color: #000; +} + +.yellow { + background: #fcd500; + color: #000; +} + +.stop-next-container { + display: flex; + flex-direction: column; + gap: 15px; +} + +.stop-next-header { + font-size: 22px; + font-weight: 600; + color: #fff; + text-align: center; +} + +.stop-next-preview-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +.stop-next-preview { + display: flex; + flex-direction: column; + gap: 5px; + align-items: center; + width: 110px; +} + +.stop-next-preview-img { + width: auto; + max-height: 110px; +} + +.stop-next-preview-name { + font-size: 16px; + font-weight: 600; + color: #fff; + text-align: center; +} + +.carrierinfo { + z-index: 400; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 350px; +} + +.carrierinfo .bg { + /* background: #2b2b2b; */ + background: rgb(125, 110, 92); + background: linear-gradient( + 0deg, + rgba(125, 110, 92, 1) 0%, + rgba(150, 138, 124, 1) 100% + ); + height: 100%; + width: 300px; + padding: 50px 25px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.carrier-img { + width: 85%; + margin: 0 auto; +} + +.hashtag { + text-align: center; + font-size: 20px; + color: #fff; +} + +.gos-container { + display: flex; + flex-direction: column; + gap: 25px; +} + +.gos-logo { + width: auto; + max-height: 125px; +} + +.gos-name { + text-align: center; + font-size: 16px; + color: #fff; +} +.modal-overlay { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.7); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} +.modal-image { + width: 80vw; + height: auto; + max-height: 80vh; + object-fit: contain; +} +.modal-close { + position: absolute; + top: 25px; + right: 25px; + font-size: 100px; + background: transparent; + border: none; + color: #fff; + cursor: pointer; +} +.modal-enter-active, +.modal-leave-active { + transition: opacity 0.3s ease; +} +.modal-enter, +.modal-leave-to { + opacity: 0; +} + +.weatherinfo { + z-index: 450; + width: 225px; + padding: 10px 15px; + display: flex; + flex-direction: column; + align-items: center; + position: absolute; + top: 140px; + left: var(--panel-offset); + color: #fff; + background: rgb(73, 69, 65); + background: linear-gradient( + 0deg, + rgba(73, 69, 65, 1) 50%, + rgba(103, 99, 94, 1) 100% + ); + border-radius: 10px; + border: 1px solid #ffffff2e; + transition: left 0.3s ease; +} + +.weatherinfo .time { + font-size: 48px; + font-weight: 600; +} + +.weatherinfo .date { + text-align: center; + font-size: 18px; + padding: 2px 0 8px 0; + width: 100%; + border-bottom: 1px solid #ffffff7a; +} + +.weatherinfo .current-weather img { + width: 75px; +} + +.current-weather div { + text-align: center; + margin-top: 5px; +} + +.temperature-celsius { + font-size: 35px; +} + +.forecast-day { + display: flex; + align-items: center; + gap: 7px; +} +.forecast-day img { + width: 20px; +} + +.weather-forecast { + width: 100%; + padding: 0 10px; + margin-top: 10px; + display: flex; + align-items: center; + justify-content: space-between; +} + +.forecast { + display: flex; + flex-direction: column; + gap: 7px; +} + +.additional-forecast { + display: flex; + flex-direction: column; + border-top: 1px solid #ffffff7a; + padding: 10px 0 0 7px; + gap: 7px; +} + +.additional-forecast .humidity, +.wind { + display: flex; + gap: 10px; +} + +.routeinfo { + z-index: 450; + height: 100px; + /* padding: 15px; */ + display: flex; + align-items: center; + position: absolute; + top: 20px; + left: var(--panel-offset); + color: #fff; + background: rgb(73, 69, 65); + background: linear-gradient( + 0deg, + rgba(73, 69, 65, 1) 50%, + rgba(103, 99, 94, 1) 100% + ); + border-radius: 10px; + border: 1px solid #ffffff2e; + transition: left 0.3s ease; +} + +.route-names { + display: flex; + flex-direction: column; + gap: 15px; + padding: 0 10px; +} + +.route-name { + font-size: 22px; + font-weight: 600; +} + +.route-translate, +.translate { + font-size: 14px; + font-weight: 400; + color: #ffffff91; +} + +.route-number { + background: #fcd500; + height: 100%; + padding: 25px; + display: flex; + align-items: center; + justify-content: center; + color: #000; + font-size: 95px; + font-weight: 800; + border-radius: 10px; +} + +.dropdown-list { + height: 0; + overflow: hidden; + transition: height 0.3s ease, opacity 0.3s ease, transform 0.3s ease; + position: relative; + border: 1px solid #ffffff2e; + margin: 0; + padding: 0; + list-style: none; + opacity: 0; + transform: translateY(-10px); +} + +.dropdown-list.show { + height: 500px; + opacity: 1; + transform: translateY(0); +} + +.dropdown-list.hidden { + pointer-events: none; +} + +.forecast-temperature { + font-weight: 700; + font-size: 18px; +} + +.carrier-toggle { + position: absolute; + bottom: 10px; + left: 310px; + background: rgba(0, 0, 0, 0.4); + border: none; + color: #fff; + font-size: 24px; + cursor: pointer; + padding: 5px 10px; + border-radius: 5px; + z-index: 1001; + transition: left 0.3s ease; +} + +.carrierinfo .bg.hidden + .carrier-toggle { + left: 10px; +} + +.bg.hidden { + transform: translateX(-100%); + transition: transform 0.3s ease; +} + +.bg { + transition: transform 0.3s ease; +} + +.routeinfo.shifted-left, +.weatherinfo.shifted-left { + left: 20px !important; + transition: left 0.3s ease; +} +.stations-list { + margin-top: 20px; + list-style: none; + padding: 0; + font-size: 18px; +} + +.stop-buttons-container { + transition: transform 0.3s ease; +} + +.dropdown-list { + position: absolute; + left: 0; + bottom: 0; + width: 300px; + height: 0; + background: rgb(125, 109, 91); + background: linear-gradient( + 90deg, + rgba(125, 109, 91, 1) 0%, + rgba(145, 132, 117, 1) 100% + ); + z-index: 2000; + box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.2); + overflow-y: hidden; + opacity: 0; + transform: translateY(100%); + transition: height 0.3s ease, opacity 0.3s ease, transform 0.3s ease; + list-style: none; + margin: 0; + font-size: 18px; + padding-bottom: 15px; + border-radius: 10px 10px 0 0; +} + +.dropdown-list.show { + height: calc(100vh - 275px); + opacity: 1; + transform: translateY(0); + overflow-y: auto; +} + +.carrier-toggle { + position: absolute; + bottom: 10px; + left: 310px; + background: rgba(0, 0, 0, 0.4); + border: none; + color: #fff; + font-size: 24px; + cursor: pointer; + padding: 5px 10px; + border-radius: 5px; + z-index: 1001; + transition: left 0.3s ease; +} + +.carrierinfo .bg.hidden + .carrier-toggle { + left: 10px; +} + +.bg.hidden { + transform: translateX(-100%); + transition: transform 0.3s ease; +} + +.bg { + transition: transform 0.3s ease; +} + +.dropdown-name { + font-size: 18px; + font-weight: 600; + color: #fff; + padding-bottom: 10px; + gap: 15px; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + width: 100%; +} + +.dropdown-list li { + list-style: none; + font-size: 16px; + color: #fff; + background-color: transparent; +} + +.sight-name { + margin: 0 20px; + padding: 20px 0 4px 0; + border-bottom: 1px solid #ffffff2e; +} + +.dropdown-list li.selected { + background-color: #4a4037; +} +.dropdown-list .sight-preview { + margin-top: 15px; + padding: 15px; + background: rgba(255, 255, 255, 0.05); + border-radius: 10px; +} +.dropdown-list .sight-preview img { + width: 100%; + border-radius: 10px; +} +.dropdown-list .sight-preview h3 { + color: white; + margin-top: 10px; +} +.dropdown-list .sight-preview p { + color: white; + font-size: 16px; +} +.sight-preview-panel { + z-index: 451; + position: absolute; + top: 440px; + left: var(--panel-offset); + width: 350px; + background: rgb(125, 110, 92); + background: linear-gradient( + 0deg, + rgba(125, 110, 92, 1) 0%, + rgba(150, 138, 124, 1) 100% + ); + border-radius: 10px; + color: white; + padding-bottom: 20px; +} + +.sight-preview-panel img { + width: 100%; + border-radius: 10px; + padding: 3px; +} + +.sight-preview-panel h3 { + padding: 10px; + margin: 0; + font-size: 18px; +} + +.sight-preview-panel p { + font-size: 16px; + margin: 0; + padding: 10px 10px 0 10px; + max-height: 150px; + overflow-y: auto; +} + +li.checked { + background: rgb(71, 51, 31); + background: linear-gradient( + 90deg, + rgba(71, 51, 31, 1) 0%, + rgba(99, 82, 63, 1) 100% + ); + font-weight: 600; +} + +.fingers-option { + position: absolute; + top: 20px; + right: 490px; +} + +.stoparticle-option { + cursor: pointer; + margin-right: 10px; +} + +.stoparticle-option.selected { + text-decoration: underline; +} + +.stoparticle-option { + cursor: pointer; + margin-right: 10px; +} + +.stoparticle-option.selected { + text-decoration: underline; +} + +.sights-wrapper { + position: relative; + overflow: hidden; + transition: all 0.4s ease; +} + +.scrollable-container { + max-height: 500px; + overflow-y: auto; + scroll-behavior: smooth; + + /* скрытие скроллбара */ + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* Internet Explorer 10+ */ +} + +.scrollable-container::-webkit-scrollbar { + display: none; /* Safari and Chrome */ +} + +.sights-alphabet { + position: absolute; + top: 15px; + right: 35px; + display: flex; + flex-direction: column; + gap: 10px; + max-height: 100%; + overflow-y: auto; +} + +.sights-alphabet span { + cursor: pointer; + color: white; + font-size: 16px; + text-align: center; +} + +.sights-alphabet span.active { + font-weight: bold; + text-decoration: underline; +} + +.sights-grid { + display: flex; + flex-wrap: wrap; + gap: 12px; + padding: 20px 20px 20px 10px; + background: #806c58; + border-top: 1px solid #fff; + margin: 0 25px; +} + +.sight-card { + width: 30%; + min-width: 100px; + text-align: center; + color: white; + display: flex; + flex-direction: column; + align-items: center; +} + +.sight-thumbnail { + width: 100%; + border-radius: 6px; +} + +.sight-title { + margin-top: 4px; + font-size: 15px; + text-align: center; +} + +.sight-letter { + color: white; + font-size: 18px; + margin-top: 10px; +} + +.sight-letter-group { + width: 30%; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 12px; +} + +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.3s ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} + +.slide-fade-enter-active, +.slide-fade-leave-active { + transition: all 0.4s ease; +} + +.slide-fade-enter-from { + opacity: 0; + transform: translateY(20px); +} + +.slide-fade-leave-to { + opacity: 0; + transform: translateY(20px); +} + +.landmarks-arrow { + transition: transform 0.3s ease; +} + +.arrow-rotated { + transform: rotate(180deg); +} + +.expand-collapse-transition-enter-active, +.expand-collapse-transition-leave-active { + transition: all 0.4s ease; +} + +.expand-collapse-transition-enter-from, +.expand-collapse-transition-leave-to { + opacity: 0; + transform: translateY(20px); +} + +.height-fade-enter-active, +.height-fade-leave-active { + transition: all 0.4s ease; +} + +.height-fade-enter-from, +.height-fade-leave-to { + opacity: 0; + transform: translateY(20px); +} + +.transfer-toggle { + position: absolute; + bottom: 10px; + padding: 5px 10px; + right: 490px; + cursor: pointer; +} + +.transfer-info { + position: absolute; + bottom: 10px; + right: 70px; + color: #fff; + background: rgb(73, 69, 65); + background: linear-gradient( + 0deg, + rgba(73, 69, 65, 1) 50%, + rgba(103, 99, 94, 1) 100% + ); + border-radius: 10px; + padding: 15px; + border: 1px solid #ffffff2e; + min-width: 350px; + min-height: 150px; + font-size: 16px; +} +.transfer-icon { + width: 24px; + height: 24px; + vertical-align: middle; +} +.transfer-item { + display: flex; + align-items: center; + gap: 7px; + font-size: 18px; + margin-bottom: 6px; +} +.transfer-title { + font-weight: bold; + margin-bottom: 10px; +} + +.image-wrapper { + position: relative; + width: 100%; + height: 300px; +} + +.img { + width: 100% !important; + height: 100% !important; + background-size: cover; + background-position: center; +} + +.watermark { + position: absolute; + max-width: 50px; + max-height: 50px; + opacity: 1; + pointer-events: none; +} + +.watermark-lu { + top: 10px; + left: 10px; +} + +.watermark-rd { + bottom: 10px; + right: 10px; +} +.route-name { + position: relative; +} + +.route-names { + max-width: 300px; + width: 100%; + overflow: hidden; +} + +.scroll-wrapper { + max-width: 100%; + overflow: hidden; + position: relative; + white-space: nowrap; +} + +.scroll-inner { + display: inline-block; + white-space: nowrap; + animation: scrollLoop 20s linear infinite; +} + +.scroll-content { + display: flex; + gap: 30px; +} + +.name-block { + display: flex; + flex-direction: column; + gap: 10px; +} + +@keyframes scrollLoop { + 0% { + transform: translateX(0%); + } + 100% { + transform: translateX(-33.333%); + } +} + +.sight-preview-wrapper { + max-height: 300px; +} diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue deleted file mode 100644 index 879051a..0000000 --- a/src/components/HelloWorld.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - diff --git a/src/components/carrierinfo.vue b/src/components/carrierinfo.vue new file mode 100644 index 0000000..263bc79 --- /dev/null +++ b/src/components/carrierinfo.vue @@ -0,0 +1,1009 @@ + + + diff --git a/src/components/main.vue b/src/components/main.vue new file mode 100644 index 0000000..cecd2e6 --- /dev/null +++ b/src/components/main.vue @@ -0,0 +1,475 @@ + + + diff --git a/src/components/routeinfo.vue b/src/components/routeinfo.vue new file mode 100644 index 0000000..7cd7b27 --- /dev/null +++ b/src/components/routeinfo.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/components/stopinfo.vue b/src/components/stopinfo.vue new file mode 100644 index 0000000..220b988 --- /dev/null +++ b/src/components/stopinfo.vue @@ -0,0 +1,505 @@ + + + diff --git a/src/components/weatherinfo.vue b/src/components/weatherinfo.vue new file mode 100644 index 0000000..40f8fa8 --- /dev/null +++ b/src/components/weatherinfo.vue @@ -0,0 +1,286 @@ + + + diff --git a/src/icons/bus.svg b/src/icons/bus.svg new file mode 100644 index 0000000..2d98c63 --- /dev/null +++ b/src/icons/bus.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/icons/clear-day.svg b/src/icons/clear-day.svg new file mode 100644 index 0000000..b7cac9d --- /dev/null +++ b/src/icons/clear-day.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/icons/cloudy.svg b/src/icons/cloudy.svg new file mode 100644 index 0000000..e45d371 --- /dev/null +++ b/src/icons/cloudy.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/default.svg b/src/icons/default.svg new file mode 100644 index 0000000..b7cac9d --- /dev/null +++ b/src/icons/default.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/icons/fog.svg b/src/icons/fog.svg new file mode 100644 index 0000000..12a65ed --- /dev/null +++ b/src/icons/fog.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/metro_blue.svg b/src/icons/metro_blue.svg new file mode 100644 index 0000000..2e7a2a1 --- /dev/null +++ b/src/icons/metro_blue.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/metro_green.svg b/src/icons/metro_green.svg new file mode 100644 index 0000000..f50babf --- /dev/null +++ b/src/icons/metro_green.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/metro_orange.svg b/src/icons/metro_orange.svg new file mode 100644 index 0000000..fe22746 --- /dev/null +++ b/src/icons/metro_orange.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/metro_purple.svg b/src/icons/metro_purple.svg new file mode 100644 index 0000000..31b1a17 --- /dev/null +++ b/src/icons/metro_purple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/metro_red.svg b/src/icons/metro_red.svg new file mode 100644 index 0000000..59c2db0 --- /dev/null +++ b/src/icons/metro_red.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/rainy.svg b/src/icons/rainy.svg new file mode 100644 index 0000000..92b255d --- /dev/null +++ b/src/icons/rainy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/snowy.svg b/src/icons/snowy.svg new file mode 100644 index 0000000..46dc49f --- /dev/null +++ b/src/icons/snowy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/thunderstorms.svg b/src/icons/thunderstorms.svg new file mode 100644 index 0000000..f9388d4 --- /dev/null +++ b/src/icons/thunderstorms.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/train.svg b/src/icons/train.svg new file mode 100644 index 0000000..03c2e9f --- /dev/null +++ b/src/icons/train.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/tram.svg b/src/icons/tram.svg new file mode 100644 index 0000000..1107938 --- /dev/null +++ b/src/icons/tram.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/icons/trolleybus.svg b/src/icons/trolleybus.svg new file mode 100644 index 0000000..dc5c60d --- /dev/null +++ b/src/icons/trolleybus.svg @@ -0,0 +1,11 @@ + + + + + + + + + + +