diff --git a/README.md b/README.md
index a1c36b5..dc6e229 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,7 @@ user@user-laptop:~$ cd oktopus/deploy/compose
user@user-laptop:~/oktopus/deploy/compose$ COMPOSE_PROFILES=nats,controller,cwmp,mqtt,stomp,ws,adapter,frontend,portainer docker compose up -d
Oktopus deployment in Kubernetes still is in beta phase: Instructions for Kubernetes deployment
- UI will open at port 3000:
+ UI will open at port 80:
Agent
diff --git a/deploy/compose/.env.frontend b/deploy/compose/.env.frontend
deleted file mode 100644
index 365e938..0000000
--- a/deploy/compose/.env.frontend
+++ /dev/null
@@ -1,17 +0,0 @@
-# ----------------------------- Local Environment ---------------------------- #
-
-NEXT_PUBLIC_REST_ENDPOINT="http://localhost:8000/api"
-NEXT_PUBLIC_WS_ENDPOINT="http://localhost:5000/"
-# ---------------------------------------------------------------------------- #
-
-# -------------------------- Production Environment -------------------------- #
-
-#NEXT_PUBLIC_REST_ENPOINT="https://demo.oktopus.app.br/api"
-#NEXT_PUBLIC_WS_ENPOINT="https://demo.oktopus.app.br/"
-# ---------------------------------------------------------------------------- #
-
-# ---------------------------- Mocked Environment ---------------------------- #
-
-#NEXT_PUBLIC_REST_ENPOINT="https://d9962fd9-2464-4a30-9a86-a15a04b57ad0.mock.pstmn.io"
-
-# ---------------------------------------------------------------------------- #
diff --git a/deploy/compose/docker-compose.yaml b/deploy/compose/docker-compose.yaml
index ed8c17a..5fdbddd 100644
--- a/deploy/compose/docker-compose.yaml
+++ b/deploy/compose/docker-compose.yaml
@@ -151,10 +151,8 @@ services:
#/* -------------------------------- Frontend -------------------------------- */
frontend:
- image: 'oktopusp/frontend'
+ image: 'oktopusp/frontend-ce'
container_name: frontend
- env_file:
- - .env.frontend
ports:
- 3000:3000
networks:
@@ -187,6 +185,21 @@ services:
usp_network:
ipv4_address: 172.16.235.16
profiles: [cwmp]
+
+ nginx:
+ image: nginx:latest
+ container_name: nginx
+ ports:
+ - 80:80
+ depends_on:
+ - frontend
+ - controller
+ - socketio
+ volumes:
+ - ./nginx.conf:/etc/nginx/conf.d/default.conf
+ networks:
+ usp_network:
+ ipv4_address: 172.16.235.17
networks:
usp_network:
diff --git a/deploy/compose/nginx.conf b/deploy/compose/nginx.conf
new file mode 100644
index 0000000..1bba7d8
--- /dev/null
+++ b/deploy/compose/nginx.conf
@@ -0,0 +1,41 @@
+server {
+ listen 80;
+ listen [::]:80;
+ server_name _;
+ root /usr/share/nginx/html;
+
+ include /etc/nginx/default.d/*.conf;
+
+ error_page 404 /404.html;
+ location = /404.html {
+ }
+
+ location / {
+ proxy_pass http://frontend:3000;
+ proxy_read_timeout 60;
+ proxy_connect_timeout 60;
+ proxy_redirect off;
+ }
+ location /api {
+ proxy_pass http://controller:8000;
+ proxy_read_timeout 60;
+ proxy_connect_timeout 60;
+ proxy_redirect off;
+ }
+ location /socket.io {
+ proxy_pass http://socketio:5000;
+ proxy_read_timeout 60;
+ proxy_connect_timeout 60;
+ proxy_redirect off;
+
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection 'upgrade';
+ proxy_set_header Host $host;
+ proxy_cache_bypass $http_upgrade;
+ }
+
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ }
+}
\ No newline at end of file
diff --git a/deploy/compose/run.sh b/deploy/compose/run.sh
new file mode 100644
index 0000000..a4d5a44
--- /dev/null
+++ b/deploy/compose/run.sh
@@ -0,0 +1 @@
+COMPOSE_PROFILES=nats,controller,cwmp,mqtt,stomp,ws,adapter,frontend,portainer docker compose up -d
diff --git a/deploy/compose/stop.sh b/deploy/compose/stop.sh
new file mode 100644
index 0000000..24d95ab
--- /dev/null
+++ b/deploy/compose/stop.sh
@@ -0,0 +1 @@
+COMPOSE_PROFILES=nats,controller,cwmp,mqtt,stomp,ws,adapter,frontend,portainer docker compose down
diff --git a/frontend/.env b/frontend/.env
index 32dec17..2116eeb 100644
--- a/frontend/.env
+++ b/frontend/.env
@@ -1,8 +1,9 @@
# ----------------------------- Local Environment ---------------------------- #
-NEXT_PUBLIC_REST_ENDPOINT="http://localhost:8000/api"
+NEXT_PUBLIC_REST_ENDPOINT="http://localhost:8000"
NEXT_PUBLIC_WS_ENDPOINT="http://localhost:5000/"
NEXT_PUBLIC_ENTERPRISE_VERSION="false"
+NEXT_PUBLIC_GOOGLE_MAPS_KEY=""
# ---------------------------------------------------------------------------- #
# -------------------------- Production Environment -------------------------- #
diff --git a/frontend/build/.dockerignore b/frontend/build/.dockerignore
index aced64b..0e0ab04 100644
--- a/frontend/build/.dockerignore
+++ b/frontend/build/.dockerignore
@@ -1 +1,4 @@
-.next/
\ No newline at end of file
+../.next/
+../node_modules/
+../.env
+../.env.local
\ No newline at end of file
diff --git a/frontend/build/Dockerfile b/frontend/build/Dockerfile
deleted file mode 100644
index fede4c2..0000000
--- a/frontend/build/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-FROM node:18.17.0-alpine as builder
-
-WORKDIR /app
-
-COPY ../ ./
-
-RUN npm install
-
-RUN NEXT_PUBLIC_REST_ENDPOINT=REST_API_URL NEXT_PUBLIC_WS_ENDPOINT=WS_URL NEXT_PUBLIC_ENTERPRISE_VERSION=ENTERPRISE_VERSION npm run build
-
-RUN ls -la && echo "Listing directory contents done"
-
-FROM node:18.17.0-alpine as runner
-
-WORKDIR /app
-
-COPY --from=builder /app/.next ./.next
-COPY --from=builder /app/package.json ./package.json
-COPY --from=builder /app/build/entrypoint.sh ./entrypoint.sh
-COPY --from=builder /app/public ./public
-
-
-RUN npm install
-
-RUN chmod 755 entrypoint.sh
-
-ENTRYPOINT ["/app/entrypoint.sh"]
-
-CMD [ "npm", "run", "start" ]
diff --git a/frontend/build/Dockerfile.ce b/frontend/build/Dockerfile.ce
new file mode 100644
index 0000000..47d6f17
--- /dev/null
+++ b/frontend/build/Dockerfile.ce
@@ -0,0 +1,22 @@
+FROM node:18.18.0-alpine as builder
+
+WORKDIR /app
+
+COPY ../ ./
+RUN rm .env && rm .env.local || true
+
+RUN npm install
+
+RUN NEXT_PUBLIC_ENTERPRISE_VERSION="false" npm run build
+
+FROM node:18.18.0-alpine as runner
+
+WORKDIR /app
+
+COPY --from=builder /app/.next ./.next
+COPY --from=builder /app/package.json ./package.json
+COPY --from=builder /app/public ./public
+
+RUN npm install
+
+CMD [ "npm", "run", "start" ]
diff --git a/frontend/build/Dockerfile.ee b/frontend/build/Dockerfile.ee
new file mode 100644
index 0000000..1c22a13
--- /dev/null
+++ b/frontend/build/Dockerfile.ee
@@ -0,0 +1,22 @@
+FROM node:18.18.0-alpine as builder
+
+WORKDIR /app
+
+COPY ../ ./
+RUN rm .env && rm .env.local || true
+
+RUN npm install
+
+RUN NEXT_PUBLIC_ENTERPRISE_VERSION="true" npm run build
+
+FROM node:18.18.0-alpine as runner
+
+WORKDIR /app
+
+COPY --from=builder /app/.next ./.next
+COPY --from=builder /app/package.json ./package.json
+COPY --from=builder /app/public ./public
+
+RUN npm install
+
+CMD [ "npm", "run", "start" ]
\ No newline at end of file
diff --git a/frontend/build/Makefile b/frontend/build/Makefile
index 204a78b..b8ea587 100644
--- a/frontend/build/Makefile
+++ b/frontend/build/Makefile
@@ -18,48 +18,16 @@ help:
@echo "Makefile commands:"
@echo ""
@echo "build - docker image build"
- @echo "push - push docker image to registry"
- @echo "run - create and start docker container with the image"
- @echo "start - start existent docker container with the image"
- @echo "stop - stop docker container running the image"
- @echo "remove - remove docker container running the image"
- @echo "delete - delete docker image"
- @echo "logs - show logs of docker container"
- @echo "bash - access container shell"
@echo "release - tag image as latest and push to registry"
- @echo "tag - tag image as latest"
build:
- @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../
-
-run:
- @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
-
-stop:
- @docker stop ${DOCKER_USER}-${DOCKER_APP}
-
-remove: stop
- @docker rm ${DOCKER_USER}-${DOCKER_APP}
-
-delete:
- @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
-
-start:
- @docker start ${DOCKER_USER}-${DOCKER_APP}
-
-push:
- @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
-
-logs:
- @docker logs -f ${DOCKER_USER}-${DOCKER_APP}
-
-bash:
- @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL}
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}-ce:${DOCKER_TAG} -f Dockerfile.ce ../
+ @docker build -t ${DOCKER_USER}/${DOCKER_APP}-ee:${DOCKER_TAG} -f Dockerfile.ee ../
release: build
- @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG}
- @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
- @docker push ${DOCKER_USER}/${DOCKER_APP}:latest
-
-tag:
- docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest
\ No newline at end of file
+ @docker push ${DOCKER_USER}/${DOCKER_APP}-ce:${DOCKER_TAG}
+ @docker push ${DOCKER_USER}/${DOCKER_APP}-ee:${DOCKER_TAG}
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}-ce:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}-ce:latest
+ @docker tag ${DOCKER_USER}/${DOCKER_APP}-ee:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}-ee:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}-ce:latest
+ @docker push ${DOCKER_USER}/${DOCKER_APP}-ee:latest
\ No newline at end of file
diff --git a/frontend/build/entrypoint.sh b/frontend/build/entrypoint.sh
deleted file mode 100644
index 5eb5329..0000000
--- a/frontend/build/entrypoint.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env sh
-set -Ex
-
-function apply_path {
-
- echo "Check that we have NEXT_PUBLIC_REST_ENDPOINT vars"
- test -n "$NEXT_PUBLIC_REST_ENDPOINT"
-
- echo "Check that we have NEXT_PUBLIC_WS_ENDPOINT vars"
- test -n "$NEXT_PUBLIC_WS_ENDPOINT"
-
- echo "Check that we have NEXT_PUBLIC_ENTERPRISE_VERSION vars"
- test -n "$NEXT_PUBLIC_ENTERPRISE_VERSION"
-
- find /app/.next \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i "s#REST_API_URL#$NEXT_PUBLIC_REST_ENDPOINT#g"
- find /app/.next \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i "s#WS_URL#$NEXT_PUBLIC_WS_ENDPOINT#g"
- find /app/.next \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i "s#ENTERPRISE_VERSION#$NEXT_PUBLIC_ENTERPRISE_VERSION#g"
-}
-
-apply_path
-echo "Starting Nextjs"
-exec "$@"
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 15a1dda..cf2561d 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -17,6 +17,7 @@
"@mui/material": "5.11.10",
"@mui/system": "5.11.9",
"@mui/x-date-pickers": "5.0.19",
+ "@react-google-maps/api": "^2.19.3",
"apexcharts": "3.37.0",
"date-fns": "2.29.3",
"formik": "2.2.9",
@@ -499,6 +500,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@googlemaps/js-api-loader": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.2.tgz",
+ "integrity": "sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "node_modules/@googlemaps/markerclusterer": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.5.3.tgz",
+ "integrity": "sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "supercluster": "^8.0.1"
+ }
+ },
"node_modules/@heroicons/react": {
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.16.tgz",
@@ -1215,6 +1233,33 @@
"url": "https://opencollective.com/popperjs"
}
},
+ "node_modules/@react-google-maps/api": {
+ "version": "2.19.3",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.3.tgz",
+ "integrity": "sha512-jiLqvuOt5lOowkLeq7d077AByTyJp+s6hZVlLhlq7SBacBD37aUNpXBz2OsazfeR6Aw4a+9RRhAEjEFvrR1f5A==",
+ "dependencies": {
+ "@googlemaps/js-api-loader": "1.16.2",
+ "@googlemaps/markerclusterer": "2.5.3",
+ "@react-google-maps/infobox": "2.19.2",
+ "@react-google-maps/marker-clusterer": "2.19.2",
+ "@types/google.maps": "3.55.2",
+ "invariant": "2.2.4"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17 || ^18",
+ "react-dom": "^16.8 || ^17 || ^18"
+ }
+ },
+ "node_modules/@react-google-maps/infobox": {
+ "version": "2.19.2",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/infobox/-/infobox-2.19.2.tgz",
+ "integrity": "sha512-6wvBqeJsQ/eFSvoxg+9VoncQvNoVCdmxzxRpLvmjPD+nNC6mHM0vJH1xSqaKijkMrfLJT0nfkTGpovrF896jwg=="
+ },
+ "node_modules/@react-google-maps/marker-clusterer": {
+ "version": "2.19.2",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/marker-clusterer/-/marker-clusterer-2.19.2.tgz",
+ "integrity": "sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw=="
+ },
"node_modules/@rushstack/eslint-patch": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz",
@@ -1245,6 +1290,11 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
},
+ "node_modules/@types/google.maps": {
+ "version": "3.55.2",
+ "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.2.tgz",
+ "integrity": "sha512-JcTwzkxskR8DN/nnX96Pie3gGN3WHiPpuxzuQ9z3516o1bB243d8w8DHUJ8BohuzoT1o3HUFta2ns/mkZC8KRw=="
+ },
"node_modules/@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -2981,8 +3031,7 @@
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-glob": {
"version": "3.3.2",
@@ -3529,6 +3578,14 @@
"node": ">= 0.4"
}
},
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"node_modules/is-array-buffer": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
@@ -4018,6 +4075,11 @@
"node": ">=4.0"
}
},
+ "node_modules/kdbush": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz",
+ "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA=="
+ },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -5445,6 +5507,14 @@
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
"integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
},
+ "node_modules/supercluster": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz",
+ "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==",
+ "dependencies": {
+ "kdbush": "^4.0.2"
+ }
+ },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -6440,6 +6510,23 @@
}
}
},
+ "@googlemaps/js-api-loader": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.2.tgz",
+ "integrity": "sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "@googlemaps/markerclusterer": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.5.3.tgz",
+ "integrity": "sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==",
+ "requires": {
+ "fast-deep-equal": "^3.1.3",
+ "supercluster": "^8.0.1"
+ }
+ },
"@heroicons/react": {
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.16.tgz",
@@ -6818,6 +6905,29 @@
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="
},
+ "@react-google-maps/api": {
+ "version": "2.19.3",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.3.tgz",
+ "integrity": "sha512-jiLqvuOt5lOowkLeq7d077AByTyJp+s6hZVlLhlq7SBacBD37aUNpXBz2OsazfeR6Aw4a+9RRhAEjEFvrR1f5A==",
+ "requires": {
+ "@googlemaps/js-api-loader": "1.16.2",
+ "@googlemaps/markerclusterer": "2.5.3",
+ "@react-google-maps/infobox": "2.19.2",
+ "@react-google-maps/marker-clusterer": "2.19.2",
+ "@types/google.maps": "3.55.2",
+ "invariant": "2.2.4"
+ }
+ },
+ "@react-google-maps/infobox": {
+ "version": "2.19.2",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/infobox/-/infobox-2.19.2.tgz",
+ "integrity": "sha512-6wvBqeJsQ/eFSvoxg+9VoncQvNoVCdmxzxRpLvmjPD+nNC6mHM0vJH1xSqaKijkMrfLJT0nfkTGpovrF896jwg=="
+ },
+ "@react-google-maps/marker-clusterer": {
+ "version": "2.19.2",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/marker-clusterer/-/marker-clusterer-2.19.2.tgz",
+ "integrity": "sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw=="
+ },
"@rushstack/eslint-patch": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz",
@@ -6850,6 +6960,11 @@
}
}
},
+ "@types/google.maps": {
+ "version": "3.55.2",
+ "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.2.tgz",
+ "integrity": "sha512-JcTwzkxskR8DN/nnX96Pie3gGN3WHiPpuxzuQ9z3516o1bB243d8w8DHUJ8BohuzoT1o3HUFta2ns/mkZC8KRw=="
+ },
"@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -8149,8 +8264,7 @@
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-glob": {
"version": "3.3.2",
@@ -8547,6 +8661,14 @@
"side-channel": "^1.0.4"
}
},
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"is-array-buffer": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
@@ -8874,6 +8996,11 @@
"object.values": "^1.1.6"
}
},
+ "kdbush": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz",
+ "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA=="
+ },
"keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -9849,6 +9976,14 @@
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
"integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
},
+ "supercluster": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz",
+ "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==",
+ "requires": {
+ "kdbush": "^4.0.2"
+ }
+ },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 1003220..7347046 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -23,6 +23,7 @@
"@mui/material": "5.11.10",
"@mui/system": "5.11.9",
"@mui/x-date-pickers": "5.0.19",
+ "@react-google-maps/api": "^2.19.3",
"apexcharts": "3.37.0",
"date-fns": "2.29.3",
"formik": "2.2.9",
diff --git a/frontend/src/contexts/auth-context.js b/frontend/src/contexts/auth-context.js
index 0b72543..83345d2 100644
--- a/frontend/src/contexts/auth-context.js
+++ b/frontend/src/contexts/auth-context.js
@@ -150,7 +150,7 @@ export const AuthProvider = (props) => {
redirect: 'follow'
};
- let result = await fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+"/auth/login", requestOptions)
+ let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/auth/login`, requestOptions)
if (result.status != 200) {
throw new Error('Please check your email and password');
@@ -199,7 +199,7 @@ export const AuthProvider = (props) => {
redirect: 'follow'
};
- let result = await fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+"/auth/admin/register", requestOptions)
+ let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/auth/admin/register`, requestOptions)
if (result.status == 200) {
router.push("/auth/login")
diff --git a/frontend/src/layouts/dashboard/config.js b/frontend/src/layouts/dashboard/config.js
index 1bd4cb2..171482a 100644
--- a/frontend/src/layouts/dashboard/config.js
+++ b/frontend/src/layouts/dashboard/config.js
@@ -42,7 +42,7 @@ export const items = [
//
//
//
- // )
+ // ),
// },
{
title: 'Credentials',
diff --git a/frontend/src/layouts/dashboard/layout.js b/frontend/src/layouts/dashboard/layout.js
index c3d0db7..2753fa6 100644
--- a/frontend/src/layouts/dashboard/layout.js
+++ b/frontend/src/layouts/dashboard/layout.js
@@ -49,12 +49,11 @@ export const Layout = withAuthGuard((props) => {
return (
<>
- setOpenNav(true)} />
+ {pathname != "/map" && setOpenNav(true)} />}
setOpenNav(false)}
open={openNav}
/>
-
{children}
diff --git a/frontend/src/pages/auth/login.js b/frontend/src/pages/auth/login.js
index ee41900..41eb255 100644
--- a/frontend/src/pages/auth/login.js
+++ b/frontend/src/pages/auth/login.js
@@ -83,7 +83,7 @@ const Page = () => {
redirect: 'follow',
};
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/auth/admin/exists`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/auth/admin/exists`, requestOptions))
let content = await result.json()
console.log("content: ", content)
if (result.status != 200) {
diff --git a/frontend/src/pages/chat.js b/frontend/src/pages/chat.js
index bdd459c..6bf1389 100644
--- a/frontend/src/pages/chat.js
+++ b/frontend/src/pages/chat.js
@@ -35,7 +35,7 @@ const Page = () => {
redirect: 'follow'
};
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/users`,requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/users`,requestOptions)
.then(response => response.json())
.then(result => {
// let teste = JSON.stringify(JSON.parse(result), null, 2)
diff --git a/frontend/src/pages/credentials.js b/frontend/src/pages/credentials.js
index 31448b5..c065c64 100644
--- a/frontend/src/pages/credentials.js
+++ b/frontend/src/pages/credentials.js
@@ -49,7 +49,7 @@ const Page = () => {
redirect: 'follow'
}
- return fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT + '/device/auth?id='+id, requestOptions)
+ return fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/auth?id=${id}`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
@@ -81,7 +81,7 @@ const Page = () => {
redirect: 'follow'
};
- let result = await fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+"/device/auth", requestOptions)
+ let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/auth`, requestOptions)
if (result.status == 200) {
console.log("user created: deu boa raça !!")
@@ -134,7 +134,7 @@ const Page = () => {
redirect: 'follow'
}
- let url = process.env.NEXT_PUBLIC_REST_ENDPOINT + '/device/auth'
+ let url = `${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/auth`
if (id !== undefined && id !== "") {
url += "?id="+id
}
@@ -224,7 +224,7 @@ const Page = () => {
{
if (e.key === 'Enter') {
console.log("Fetch credentials per username: ", e.target.value)
diff --git a/frontend/src/pages/devices.js b/frontend/src/pages/devices.js
index a55f33e..45f2732 100644
--- a/frontend/src/pages/devices.js
+++ b/frontend/src/pages/devices.js
@@ -46,7 +46,7 @@ const Page = () => {
redirect: 'follow'
}
- fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+'/device', requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device`, requestOptions)
.then(response => {
if (response.status === 401)
router.push("/auth/login")
@@ -86,7 +86,7 @@ const Page = () => {
p = p - 1
p = p.toString()
- fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+'/device?page_number='+p, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device?page_number=+${p}`, requestOptions)
.then(response => {
if (response.status === 401)
router.push("/auth/login")
@@ -116,7 +116,7 @@ const Page = () => {
}
if (id == ""){
- return fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+'/device', requestOptions)
+ return fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device`, requestOptions)
.then(response => {
if (response.status === 401)
router.push("/auth/login")
@@ -134,7 +134,7 @@ const Page = () => {
});
}
- let response = await fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+'/device?id='+id, requestOptions)
+ let response = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device?id=${id}`, requestOptions)
if (response.status === 401)
router.push("/auth/login")
let json = await response.json()
diff --git a/frontend/src/pages/index.js b/frontend/src/pages/index.js
index 1b79eb6..260fbfc 100644
--- a/frontend/src/pages/index.js
+++ b/frontend/src/pages/index.js
@@ -38,7 +38,7 @@ const Page = () => {
redirect: 'follow',
};
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/info/general`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/info/general`, requestOptions))
if (result.status === 401){
router.push("/auth/login")
}else if (result.status != 200){
diff --git a/frontend/src/pages/map.js b/frontend/src/pages/map.js
new file mode 100644
index 0000000..24a111c
--- /dev/null
+++ b/frontend/src/pages/map.js
@@ -0,0 +1,86 @@
+import Head from 'next/head';
+import { GoogleMap, useLoadScript } from "@react-google-maps/api"
+import { Layout as DashboardLayout } from 'src/layouts/dashboard/layout';
+import { useEffect, useMemo, useState } from 'react';
+import mapStyles from '../utils/mapStyles.json';
+
+const Page = () => {
+
+ const libraries = useMemo(() => ['places'], []);
+
+ const [mapCenter, setMapCenter] = useState(null);
+
+ useEffect(()=> {
+ // Check if geolocation is supported by the browser
+ if ("geolocation" in navigator) {
+ // Prompt user for permission to access their location
+ navigator.geolocation.getCurrentPosition(
+ // Get the user's latitude and longitude coordinates
+ // Success callback function
+ function(position) {
+ // Update the map with the user's new location
+ setMapCenter({
+ lat: position.coords.latitude,
+ lng: position.coords.longitude,
+ })
+ },
+ // Error callback function
+ function(error) {
+ // Handle errors, e.g. user denied location sharing permissions
+ console.error("Error getting user location:", error);
+ }
+ );
+ } else {
+ // Geolocation is not supported by the browser
+ console.error("Geolocation is not supported by this browser.");
+ }
+ },[])
+
+ const mapOptions = useMemo(
+ () => ({
+ disableDefaultUI: false,
+ clickableIcons: true,
+ zoomControl: true,
+ controlSize: 23,
+ styles: mapStyles,
+ mapTypeControlOptions: {
+ mapTypeIds: ['roadmap', 'satellite'],
+ }
+ }),
+ []
+ );
+
+ const { isLoaded } = useLoadScript({
+ googleMapsApiKey: process.env.NEXT_PUBLIC_GOOGLE_MAPS_KEY,
+ libraries: libraries,
+ });
+
+ if (!isLoaded) {
+ return Loading...
;
+ }
+
+ return ( mapCenter &&
+ <>
+
+
+ Maps | Oktopus
+
+
+ console.log('Map Component Loaded...')}
+ clickableIcons={false}
+ />
+ >
+ )};
+
+ Page.getLayout = (page) => (
+
+ {page}
+
+ );
+
+ export default Page;
\ No newline at end of file
diff --git a/frontend/src/pages/settings.js b/frontend/src/pages/settings.js
index 7dab58a..2e3f360 100644
--- a/frontend/src/pages/settings.js
+++ b/frontend/src/pages/settings.js
@@ -8,7 +8,7 @@ const Page = () => (
<>
- Settings | Devias Kit
+ Settings | Oktopus
{
redirect: 'follow'
}
- return fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT + '/auth/delete/' + id, requestOptions)
+ return fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/auth/delete/${id}`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
@@ -82,7 +82,7 @@ const Page = () => {
redirect: 'follow'
}
- return fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT + '/users', requestOptions)
+ return fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/users`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
@@ -142,7 +142,7 @@ const Page = () => {
redirect: 'follow'
};
- let result = await fetch(process.env.NEXT_PUBLIC_REST_ENDPOINT+"/auth/register", requestOptions)
+ let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/auth/register`, requestOptions)
if (result.status == 200) {
console.log("user created: deu boa raça !!")
diff --git a/frontend/src/sections/devices/cwmp/connecteddevices.js b/frontend/src/sections/devices/cwmp/connecteddevices.js
index 6a24792..50e86a2 100644
--- a/frontend/src/sections/devices/cwmp/connecteddevices.js
+++ b/frontend/src/sections/devices/cwmp/connecteddevices.js
@@ -28,7 +28,7 @@ export const ConnectedDevices = () => {
redirect: 'follow'
};
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/connecteddevices`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/connecteddevices`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
diff --git a/frontend/src/sections/devices/cwmp/devices-diagnostic.js b/frontend/src/sections/devices/cwmp/devices-diagnostic.js
index 41bbb8c..b796e9d 100644
--- a/frontend/src/sections/devices/cwmp/devices-diagnostic.js
+++ b/frontend/src/sections/devices/cwmp/devices-diagnostic.js
@@ -65,7 +65,7 @@ export const DevicesDiagnostic = () => {
redirect: 'follow'
};
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/ping`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/ping`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
@@ -95,7 +95,7 @@ export const DevicesDiagnostic = () => {
body: JSON.stringify(content)
};
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/ping`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/ping`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
diff --git a/frontend/src/sections/devices/cwmp/devices-rpc.js b/frontend/src/sections/devices/cwmp/devices-rpc.js
index 5406d32..62c97b0 100644
--- a/frontend/src/sections/devices/cwmp/devices-rpc.js
+++ b/frontend/src/sections/devices/cwmp/devices-rpc.js
@@ -110,7 +110,7 @@ const handleOpen = () => {
}
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/cwmp/${router.query.id[0]}/${method}`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/cwmp/${router.query.id[0]}/${method}`, requestOptions)
.then(response => response.text())
.then(result => {
if (result.status === 401){
diff --git a/frontend/src/sections/devices/cwmp/devices-wifi.js b/frontend/src/sections/devices/cwmp/devices-wifi.js
index bd10cec..e9047f2 100644
--- a/frontend/src/sections/devices/cwmp/devices-wifi.js
+++ b/frontend/src/sections/devices/cwmp/devices-wifi.js
@@ -59,7 +59,7 @@ export const DevicesWiFi = () => {
redirect: 'follow'
};
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/wifi`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/wifi`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
@@ -197,7 +197,7 @@ export const DevicesWiFi = () => {
body: data,
redirect: 'follow'
};
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/wifi`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/wifi`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
diff --git a/frontend/src/sections/devices/cwmp/site-survey.js b/frontend/src/sections/devices/cwmp/site-survey.js
index 6e49349..1a97cfe 100644
--- a/frontend/src/sections/devices/cwmp/site-survey.js
+++ b/frontend/src/sections/devices/cwmp/site-survey.js
@@ -153,7 +153,7 @@ export const SiteSurvey = (props) => {
redirect: 'follow'
};
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/sitesurvey`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/sitesurvey`, requestOptions)
.then(response => {
if (response.status === 401) {
router.push("/auth/login")
diff --git a/frontend/src/sections/devices/usp/devices-discovery.js b/frontend/src/sections/devices/usp/devices-discovery.js
index 92aaa3a..ed003d4 100644
--- a/frontend/src/sections/devices/usp/devices-discovery.js
+++ b/frontend/src/sections/devices/usp/devices-discovery.js
@@ -96,7 +96,7 @@ const addDeviceObj = async(obj, setShowLoading, router, updateDeviceParameters)
body: raw
};
setShowLoading(true)
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/add`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/add`, requestOptions))
if (result.status != 200) {
if (result.status === 401){
router.push("/auth/login")
@@ -131,7 +131,7 @@ const deleteDeviceObj = async(obj, setShowLoading, router, updateDeviceParameter
body: raw
};
setShowLoading(true)
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/del`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/del`, requestOptions))
if (result.status != 200) {
if (result.status === 401){
router.push("/auth/login")
@@ -481,7 +481,7 @@ const getDeviceParameters = async (raw) =>{
body: raw
};
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/parameters`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/parameters`, requestOptions))
if (result.status != 200) {
if (result.status === 401){
router.push("/auth/login")
@@ -505,7 +505,7 @@ const getDeviceParameterInstances = async (raw) =>{
body: raw
};
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/instances`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/instances`, requestOptions))
if (result.status != 200) {
throw new Error('Please check your email and password');
}else if (result.status === 401){
@@ -779,7 +779,7 @@ const getDeviceParameterInstances = async (raw) =>{
body: raw
};
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/get`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/get`, requestOptions))
if (result.status != 200) {
if (result.status === 401){
router.push("/auth/login")
@@ -1029,7 +1029,7 @@ const getDeviceParameterInstances = async (raw) =>{
setOpen(false)
setShowLoading(true)
- let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/set`, requestOptions))
+ let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/set`, requestOptions))
if (result.status != 200) {
if (result.status === 401){
router.push("/auth/login")
@@ -1172,7 +1172,7 @@ const getDeviceParameterInstances = async (raw) =>{
body: raw
};
setShowLoading(true)
- let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/operate`, requestOptions)
+ let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/operate`, requestOptions)
let content = await result.json()
if (result.status != 200) {
setShowLoading(false)
diff --git a/frontend/src/sections/devices/usp/devices-rpc.js b/frontend/src/sections/devices/usp/devices-rpc.js
index 8406877..521bd9e 100644
--- a/frontend/src/sections/devices/usp/devices-rpc.js
+++ b/frontend/src/sections/devices/usp/devices-rpc.js
@@ -84,7 +84,7 @@ const handleOpen = () => {
}
- fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/${router.query.id[0]}/any/${method}`, requestOptions)
+ fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/any/${method}`, requestOptions)
.then(response => response.text())
.then(result => {
if (result.status === 401){
diff --git a/frontend/src/sections/overview/overview-latest-orders.js b/frontend/src/sections/overview/overview-latest-orders.js
index ba3e2ae..1cc0ead 100644
--- a/frontend/src/sections/overview/overview-latest-orders.js
+++ b/frontend/src/sections/overview/overview-latest-orders.js
@@ -76,7 +76,7 @@ export const OverviewLatestOrders = (props) => {
redirect: 'follow'
};
- let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT}/device/alias?id=${sn}`, requestOptions)
+ let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/alias?id=${sn}`, requestOptions)
console.log("result:", result)
if (result.status === 401){
router.push("/auth/login")
@@ -199,13 +199,6 @@ export const OverviewLatestOrders = (props) => {
setDeviceAlias(order.Alias)
setShowSetDeviceAlias(true)
}}
- onKeyDown={e => {
- if (e.key === 'Enter') {
- setDeviceToBeChanged(index)
- setDeviceAlias(order.Alias)
- setShowSetDeviceAlias(true)
- }
- }}
>
{
*/}
+ {showSetDeviceAlias&&
Device Alias
- {setDeviceAlias(e.target.value)}}>
+ {setDeviceAlias(e.target.value)}}
+ onKeyUp={e => {
+ if (e.key === 'Enter') {
+ setNewDeviceAlias(deviceAlias, orders[deviceToBeChanged].SN)
+ }
+ }}>
@@ -255,7 +254,7 @@ export const OverviewLatestOrders = (props) => {
setNewDeviceAlias(deviceAlias, orders[deviceToBeChanged].SN)
}}>Save
-
+ }
);
};
diff --git a/frontend/src/utils/mapStyles.json b/frontend/src/utils/mapStyles.json
new file mode 100644
index 0000000..b454593
--- /dev/null
+++ b/frontend/src/utils/mapStyles.json
@@ -0,0 +1,20 @@
+[
+ {
+ "featureType": "all",
+ "elementType": "labels.text",
+ "stylers": [
+ {
+ "visibility": "on"
+ }
+ ]
+ },
+ {
+ "featureType": "poi",
+ "elementType": "labels.icon",
+ "stylers": [
+ {
+ "visibility": "off"
+ }
+ ]
+ }
+ ]
\ No newline at end of file