From 0dbf2190da9a155aa185f3268415ae568f3a2c36 Mon Sep 17 00:00:00 2001 From: Alex Milanov Date: Fri, 10 May 2024 21:37:44 +0300 Subject: [PATCH] added docker support and debounce logic on door open button --- docker/.env | 1 + docker/Dockerfile | 20 ++++++++++++ docker/docker-compose.yml | 31 +++++++++++++++++++ package.json | 3 +- .../DeviceActionButton/DeviceActionButton.jsx | 15 ++++++--- yarn.lock | 5 +++ 6 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 docker/.env create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.yml diff --git a/docker/.env b/docker/.env new file mode 100644 index 0000000..ffac9fa --- /dev/null +++ b/docker/.env @@ -0,0 +1 @@ +COMPOSE_PROJECT_NAME=space-initlab \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..c15b730 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,20 @@ +FROM node:18-alpine + +RUN apk add --no-cache make gcc g++ bash git python3 py3-pip + +WORKDIR /etc/app + +COPY package.json package.json +COPY yarn.lock . +RUN yarn + +# copy files +COPY src . +COPY public . +COPY index.html . +COPY vite.config.js . +COPY .env.development . + +# RUN bash bin/build.sh + +CMD ["yarn", "dev"] diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..192b7e0 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,31 @@ +version: '3' +networks: + lan: + external: true + internal: + external: false +services: + app: + build: + context: ../ + dockerfile: ./docker/Dockerfile + volumes: + - '../src:/etc/app/src' + - '../public:/etc/app/public' + - '../index.html:/etc/app/index.html' + - '../vite.config.js:/etc/app/vite.config' + - '../.env.development:/etc/app/.env.development' + networks: + - internal + - lan + # ports: + # - '1234:1234' + labels: + - traefik.enable=true + - traefik.http.routers.space-initlab.rule=Host(`space.initlab.lan`) + - traefik.http.routers.space-initlab.service=dashboard + - traefik.http.services.space-initlab.loadbalancer.server.port=5173 + - traefik.http.routers.space-initlab-secure.rule=Host(`space.initlab.lan`) + - traefik.http.routers.space-initlab-secure.service=space-initlab + - traefik.http.routers.space-initlab-secure.entrypoints=websecure + - traefik.http.routers.space-initlab-secure.tls diff --git a/package.json b/package.json index 05bdac9..de835e2 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --no-open --host 0.0.0.0", "build": "vite build", "preview": "vite preview", "lint": "eslint --ext .js,.jsx src/" @@ -17,6 +17,7 @@ "bootstrap": "^5.3.1", "bootswatch": "^5.3.1", "date-fns": "^2.30.0", + "debounce": "^2.0.0", "i18next": "^23.5.1", "i18next-http-backend": "^2.2.2", "js-pkce": "^1.3.0", diff --git a/src/widgets/DeviceActionButton/DeviceActionButton.jsx b/src/widgets/DeviceActionButton/DeviceActionButton.jsx index d462c9a..fb4582f 100644 --- a/src/widgets/DeviceActionButton/DeviceActionButton.jsx +++ b/src/widgets/DeviceActionButton/DeviceActionButton.jsx @@ -5,6 +5,7 @@ import './DeviceActionButton.scss'; import { useDeviceActionMutation } from '../../features/apiSlice.js'; import RedirectToLogin from '../RedirectToLogin.jsx'; import { sleep } from '../../utils/time.js'; +import debounce from 'debounce'; const types = { open: { @@ -50,15 +51,19 @@ const DeviceActionButton = ({ icon: '', }; + const openDoor = debounce(execute, 2000); + async function handleClick() { setDisabled(true); - await execute({ - deviceId, - action, - }); + // await execute({ + // deviceId, + // action, + // }); + + openDoor({deviceId, action}); - await sleep(3000); + // await sleep(3000); setDisabled(false); } diff --git a/yarn.lock b/yarn.lock index 211980c..702d53d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3065,6 +3065,11 @@ date-fns@^2.30.0: dependencies: "@babel/runtime" "^7.21.0" +debounce@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-2.0.0.tgz#b2f914518a1481466f4edaee0b063e4d473ad549" + integrity sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA== + debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"