diff --git a/0PLAN.org b/0PLAN.org deleted file mode 100644 index d985997..0000000 --- a/0PLAN.org +++ /dev/null @@ -1,89 +0,0 @@ -#+title: Frontend - -* Plan - -** 0.2 - -- [-] use localStorage to store user - - [ ] add barcode scanner to get the user - - [X] allow editing - - [X] add UserSelect component -- [X] integrate script for starting build qemu system -- [X] add org file to the repository after cleanup - -** 0.3 - -- [ ] versioned schema support - - [ ] barschema table - - [ ] function to check - - [ ] function to set - - [ ] initial creation of tables at version 1 assuming OK if tables exist - -** 0.4 - -- [ ] add inventory check table -- [ ] add inventory item check table -- [ ] create new check -- [ ] check item -- [ ] close check -- [ ] inventory check component - -** Later - -- [ ] add static token support - - [ ] hardwired token for the React.JS app? -- [ ] authentication - - [ ] login/logout - - [ ] allow API calls only with login token - -* Finished - -** 0.1 - -- [X] statically compiled binary HTTP server -- [X] include directory tree contents -- [X] handle frontend with mime type -- [X] move app to / again -- [X] load certificates -- [X] deployment preparations - - [X] crosscompilation - no, compile in qemu or on separate host - - [X] connect to postgres - - [X] use qr-scanner - no, qr-barcode-scanner is needed - - [X] rsync + build in qemu or host without react (filters or something) -- [X] API infrastructure - - [X] handle API calls - - [X] API registry syntax - - [X] lookup barcode in DB - - [X] separate module brmbar-data for queries - - [X] separate module api-servlets - -* Qemu - -#+BEGIN_SRC -wget img zip # 2019-04-08-raspbian-stretch.zip -unzip 2019-04-08-raspbian-stretch.zip -sudo mkdir /mnt/image -sudo mount -o loop,offset=4194304 2019-04-08-raspbian-stretch.img /mnt/image/ -# In qemu-system-armhf terminal! -cp kernel, DT -umount /mnt/image -resize img -#+END_SRC - -sources.list - archive debian (remove rpi), archive raspberry -https://archive.raspberrypi.org/debian/ -https://archive.debian.org/debian/ -apt-get --no - -* React - Vite - -#+BEGIN_SRC sh - npm create vite@latest - # "frontend" - # React - # Javascript - cd frontend - npm install - npm run dev - npm run build -#+END_SRC diff --git a/backend/brminv.scm b/backend/brminv.scm index 48c5c28..808bf70 100644 --- a/backend/brminv.scm +++ b/backend/brminv.scm @@ -47,7 +47,6 @@ (define -db-user- (make-parameter #f)) (define -db-name- (make-parameter #f)) (define -db-pass- (make-parameter #f)) -(define -db-enabled- (make-parameter #t)) (command-line print-help @@ -83,8 +82,6 @@ (-db-user- dbuser)) (-dp (dbpass) "Database password" (-db-pass- dbpass)) - (-dd () "Disable database" - (-db-enabled- #f)) ) (define ssl? (and (-certificate-) (-key-) #t)) @@ -123,8 +120,7 @@ (print "current user id: " (current-user-id)) (print "current effective user id: " (current-effective-user-id)) -(when (-db-enabled-) - (bar-db-init! (-db-name-) (-db-host-) (-db-user-) (-db-pass-))) +(bar-db-init! (-db-name-) (-db-host-) (-db-user-) (-db-pass-)) (define (handle-api-calls) (define plst (cdr (uri-path (request-uri (current-request))))) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 2ae663c..2f4a741 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,84 +1,13 @@ -import { useState, useEffect } from 'react'; +import { useState } from 'react'; import BarcodeScannerComponent from 'react-qr-barcode-scanner'; -import Container from 'react-bootstrap/Container'; -import Row from 'react-bootstrap/Row'; -import Col from 'react-bootstrap/Col'; +import { Container, Row, Col } from 'react-bootstrap'; import Table from 'react-bootstrap/Table'; import Alert from 'react-bootstrap/Alert'; -import Form from 'react-bootstrap/Form'; -import Button from 'react-bootstrap/Button'; import './App.css'; import 'bootstrap/dist/css/bootstrap.min.css'; function App() { - // Ensure we have persistent (informal) user information - const [user, setUser] = useState(""); - useEffect(() => { - const user = localStorage.getItem('user'); - if (user) { - setUser(user); - } - }, []); - useEffect(() => { - localStorage.setItem('user', user); - }, [user]); - - // If no user, must be scanned/set otherwise - return ( - - {user === "" ? - - : - } - - ); -} - -function NoUserView({setUser}) { - const [preUser, setPreUser] = useState(""); - return ( - <> - - - - User: - setPreUser(v.target.value)} /> - Which user is using this App? - - - - - - Scanner - - - - - - - - - ); -} - -function UserView({user, setUser}) { - return ( - - - {user} - - - - - - - ); -} - -function BarItemScanner() { const [reqAccount, setReqAccount] = useState(''); const [actAccount, setActAccount] = useState(''); const [balance, setBalance] = useState(-1); @@ -108,7 +37,7 @@ function BarItemScanner() { }; return ( - <> + {statusMsg} - + ); } diff --git a/install-eggs-arm.sh b/install-eggs-arm.sh new file mode 100644 index 0000000..fbd5da6 --- /dev/null +++ b/install-eggs-arm.sh @@ -0,0 +1,64 @@ +#!/bin/sh +# +# install-eggs.sh +# +# Local installer of CHICKEN eggs required for building. +# +# ISC License +# +# Copyright 2023 Brmlab, z.s. +# Dominik Pantůček +# +# Permission to use, copy, modify, and/or distribute this software +# for any purpose with or without fee is hereby granted, provided +# that the above copyright notice and this permission notice appear +# in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +# Source root directory +owd=$(pwd) +cd $(dirname "$0") +SRCDIR=$(pwd) +cd "$owd" + +# Make temporary prefix directory (eggs shared throwaway files) +TMPDIR=$(mktemp -d) + +# Installs given egg locally +chicken_install() { + echo "Installing $1 ..." + # CHICKEN_INSTALL_PREFIX="$TMPDIR" \ + # CHICKEN_REPOSITORY_PATH="$SRCDIR/eggs-arm":`./cross-chicken-arm/bin/arm-chicken-install -repository` \ + # CHICKEN_INSTALL_REPOSITORY="$SRCDIR/eggs-arm" \ + # ./cross-chicken-arm/bin/arm-chicken-install "$1" 2>&1 | \ + # sed -u 's/^/ /' +# CHICKEN_INSTALL_PREFIX="$TMPDIR" \ + ./cross-chicken-arm/bin/arm-chicken-install "$1" 2>&1 | \ + sed -u 's/^/ /' +} + +# Removes throwaway files +chicken_cleanup() { + echo "Cleaning up ..." + rm -fr ${TMPDIR} +} + +# Always cleanup +trap chicken_cleanup INT QUIT + +# Install required eggs +chicken_install spiffy +chicken_install openssl +chicken_install postgresql + +# Normal termination cleanup +chicken_cleanup diff --git a/install-eggs.sh b/install-eggs.sh index 08c098c..2bcb95c 100644 --- a/install-eggs.sh +++ b/install-eggs.sh @@ -57,7 +57,6 @@ chicken_install openssl chicken_install spiffy chicken_install postgresql chicken_install json -chicken_install posix-groups # Normal termination cleanup chicken_cleanup diff --git a/tools/build-in-qemu.sh b/tools/build-in-qemu.sh index ebd2093..a14913f 100644 --- a/tools/build-in-qemu.sh +++ b/tools/build-in-qemu.sh @@ -1,28 +1,4 @@ #!/bin/sh -# -# build-in-qemu.sh -# -# Expects running armhf qemu system, builds the binary inside. -# -# ISC License -# -# Copyright 2025 Brmlab, z.s. -# Dominik Pantůček -# -# Permission to use, copy, modify, and/or distribute this software -# for any purpose with or without fee is hereby granted, provided -# that the above copyright notice and this permission notice appear -# in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE -# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR -# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, -# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# if [ -z "$1" ] ; then echo "Usage: $0 password" diff --git a/tools/run-build-qemu-system.sh b/tools/run-build-qemu-system.sh deleted file mode 100644 index c76d8b8..0000000 --- a/tools/run-build-qemu-system.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh -# -# run-build-qemu-system.sh -# -# Runs the emulated armhf system for building the application. -# -# ISC License -# -# Copyright 2025 Brmlab, z.s. -# Dominik Pantůček -# -# Permission to use, copy, modify, and/or distribute this software -# for any purpose with or without fee is hereby granted, provided -# that the above copyright notice and this permission notice appear -# in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE -# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR -# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, -# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# - -qemu-system-armhf \ - -machine raspi2b \ - -nographic \ - -dtb bcm2710-rpi-3-b-plus.dtb \ - -m 1G \ - -smp 4 \ - -kernel kernel7.img \ - -sd 2019-04-08-raspbian-stretch.img \ - -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootdelay=1 dwc_otg.fiq_fsm_enable=0" \ - -usb \ - -device usb-net,netdev=net0 \ - -netdev user,id=net0,hostfwd=tcp::2222-:22