workbench-client
workbench-client: a client side browser application for interacting with acoustic workbenches
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.8%) to scientific vocabulary
Repository
workbench-client: a client side browser application for interacting with acoustic workbenches
Basic Info
Statistics
- Stars: 9
- Watchers: 3
- Forks: 1
- Open Issues: 267
- Releases: 1
Metadata Files
README.md
Workbench Client
The Angular client for an acoustic workbench application.
Install instructions
Requirements
Generally we try to stick to the Latest Stable Release (LSR) for all requirements and dependencies.
- Node LSR
- NPM LSR
- Chrome LSR
- Firefox LSR
- Edge (Chromium) LSR
Installation
To install project dependencies run:
bash
$ npm install
To develop
Normal development
bash
$ npm start
Then open a web browser to https://development.ecosounds.org:4200.
Server side rendering
bash
$ npm run serve:ssr
Then open a web browser to http://localhost:4000.
Environment
This website can be customised through the environment file located at ./src/assets/environment.json (note: look at the docker section for deploying environment files). Here is a list of settings and some example values:
| Parameter | Description | Example Value |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| endpoints.environment | The environment for this instance. Currently used only for informational purposes. | developmentstagingproduction |
| endpoints.apiRoot | Any API requests made from the app will use this value for its base and append routes to it | https://ecosounds.orghttps://ecosounds.org:3000https://ecosounds.org/api |
| endpoints.clientOrigin | This is the origin of where the website will be hosted | https://ecosounds.orghttps://ecosounds.org:3000 |
| endpoints.clientDir | This is the directory on the clientOrigin which the website is hosted | /website/web/angular |
| keys.googleMaps | Google maps API key | Check googles official setup guide |
| keys.googleAnalytics | Google analytics domain and tracking ID | Check googles official setup guide |
| settings.brand.short | This changes the logo branding of the website | Ecosounds |
| settings.brand.long | This changes the full length name of the website | Ecosounds - Acoustic Workbench |
| settings.links | This is a list of external links used throughout the website. Check the template for the list of modifiable links |
| settings.customMenu | This is a list of custom menu items which changes the contents of the header with instance specific links. Check the template for examples |
To use the embedded Google Maps in both development and production, it is required that the keys.googleMaps property is set.
If you have not set this value the embedded maps will not work, and an error will be thrown in the console with the message "Google Maps JavaScript API error: InvalidKeyMapError".
Testing
Unit tests
This project has a number of options when it comes to testing. For development we utilize the chrome browser for testing, however the application should support the following browsers: Chrome, Firefox, Edge. When attempting to test a specific file/component/service, either use the Test Explorer plugin for VSCode, or modify the src/test.ts file so that its regex will find the file you wish to test.
Development Testing:
bash
$ npm test
Chrome Browser Testing:
bash
$ npm run test:chrome
Firefox Browser Testing:
bash
$ npm run test:firefox
Edge (Chromium Based) Browser Testing:
bash
$ npm run test:edge
All Supported Browsers Testing:
bash
$ npm run test:all
Code Coverage
On the completion of the unit tests, the system will automatically generate a code coverage report. You can view the report here: ./coverage/workbench-client/index.html
To build
To build the application:
bash
$ npm run build
Move the generated files from the /dist directory to the required location.
Build Statistics
When adding a library to the repository, you may wish to view its cost on the system. You can view the build size using the following command:
bash
$ npm run stats
This will allow you to compare the bundle size impacts before and after the update by switching between checked out commits/branches.
Common Problems
Check our Wiki pages for help with common problems and using systems custom to our application.
Production deploy
Deploying to production can be as simple as copying the release assets to a statically served directory, setting up your routing, and adding an environment.json file.
- Copy and extract a release to a statically served directory like
public - Template your
environment.jsonand place it in thepublic/workbench-client/assetsdirectory - Ensure whatever routing solution you have can route requests for SPA with a wildcard route, excepting the
assetsfolder
Note: this configuration is a fully static SPA and may suffer from slow loading times and poor SEO.
Docker
Server side rendering allows a server to render the first page and send it to the browser while the rest of the application bundle downloads. To make this work you need to run our docker container which contains the web server. The docker repository for this website can be found here: https://hub.docker.com/repository/docker/qutecoacoustics/workbench-client
Using a pre-built container
- Template your
environment.jsonfile, and example can be found at./src/assets/environment.json - Run the following command (substituting in the path to your templated config file):
bash
$ docker pull qutecoacoustics/workbench-client:latest
$ docker run -p 4000:4000 -v "$(pwd)/environment.json:/environment.json" qutecoacoustics/workbench-client:latest
- Done!
Build container locally
To build the container locally for testing:
bash
$ docker build -t qutecoacoustics/workbench-client .
$ docker run -p 4000:4000 -v "$(pwd)/environment.json:/environment.json" qutecoacoustics/workbench-client
Debugging the container
bash
$ docker run -p 4000:4000 -v "$(pwd)/environment.json:/environment.json" -e DEBUG=express:* qutecoacoustics/workbench-client
Licence
Apache License, Version 2.0
Acknowledgements
This work has been supported through several grants.
The most recent of which is the ARDC Platforms project. This project is currently sponsored by the Open Ecoacoustics ARDC Platforms project. See doi.org/10.47486/PL050 for more details.
Owner
- Name: QUT Ecoacoustics Research Group
- Login: QutEcoacoustics
- Kind: organization
- Location: Brisbane, QLD, Australia
- Website: https://www.ecosounds.org
- Twitter: QUTEcoacoustics
- Repositories: 24
- Profile: https://github.com/QutEcoacoustics
The lab investigates the use of acoustic sensing technology for monitoring the environment
GitHub Events
Total
- Issues event: 215
- Delete event: 70
- Member event: 2
- Issue comment event: 230
- Push event: 442
- Pull request event: 137
- Pull request review comment event: 258
- Pull request review event: 217
- Create event: 123
Last Year
- Issues event: 215
- Delete event: 70
- Member event: 2
- Issue comment event: 230
- Push event: 442
- Pull request event: 137
- Pull request review comment event: 258
- Pull request review event: 217
- Create event: 123
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 174
- Total pull requests: 88
- Average time to close issues: 9 months
- Average time to close pull requests: about 2 months
- Total issue authors: 9
- Total pull request authors: 4
- Average comments per issue: 0.28
- Average comments per pull request: 1.64
- Merged pull requests: 56
- Bot issues: 0
- Bot pull requests: 21
Past Year
- Issues: 146
- Pull requests: 58
- Average time to close issues: 13 days
- Average time to close pull requests: 7 days
- Issue authors: 6
- Pull request authors: 3
- Average comments per issue: 0.16
- Average comments per pull request: 1.84
- Merged pull requests: 40
- Bot issues: 0
- Bot pull requests: 5
Top Authors
Issue Authors
- hudson-newey (129)
- atruskie (32)
- nellihol (4)
- Allcharles (4)
- JessieLOliver (1)
- S-t-e-v-eH (1)
- emilysoaring (1)
- ellerobertson (1)
- Rob-Clemens (1)
Pull Request Authors
- hudson-newey (63)
- dependabot[bot] (21)
- Allcharles (3)
- atruskie (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v2 composite
- actions/setup-node v2 composite
- preactjs/compressed-size-action v2 composite
- actions/checkout v2 composite
- docker/login-action v1 composite
- EnricoMi/publish-unit-test-result-action v1 composite
- actions/checkout v2 composite
- actions/download-artifact v2 composite
- actions/setup-node v2 composite
- actions/upload-artifact v2 composite
- node 18-alpine build
- node 14-alpine build
- 1340 dependencies
- @angular-devkit/build-angular 14.2.6 development
- @angular-eslint/builder 14.0.2 development
- @angular-eslint/eslint-plugin 14.0.2 development
- @angular-eslint/eslint-plugin-template 14.0.2 development
- @angular-eslint/schematics 14.0.2 development
- @angular-eslint/template-parser 14.0.2 development
- @angular/cli 14.0.6 development
- @angular/compiler-cli 14.0.6 development
- @angular/language-service 14.1.0 development
- @chiragrupani/karma-chromium-edge-launcher ^2.2.2 development
- @faker-js/faker ^7.3.0 development
- @ngneat/spectator ^11.1.0 development
- @nguniversal/builders 14.0.3 development
- @types/d3-color ^3.1.0 development
- @types/express ^4.17.13 development
- @types/gtag.js ^0.0.10 development
- @types/jasmine ^4.0.3 development
- @types/jasminewd2 ^2.0.10 development
- @types/luxon ^3.0.0 development
- @types/node ^18.0.6 development
- @typescript-eslint/eslint-plugin ^5.30.7 development
- @typescript-eslint/parser ^5.30.7 development
- @webcomponents/webcomponentsjs ^2.6.0 development
- codelyzer ^6.0.2 development
- eslint ^8.20.0 development
- eslint-plugin-import ^2.26.0 development
- eslint-plugin-jsdoc ^39.3.3 development
- eslint-plugin-prefer-arrow 1.2.3 development
- eslint-plugin-rxjs ^5.0.2 development
- eslint-plugin-rxjs-angular ^2.0.0 development
- jasmine-core ^4.2.0 development
- jasmine-reporters ^2.5.0 development
- jasmine-spec-reporter ^7.0.0 development
- karma ^6.4.0 development
- karma-chrome-launcher ^3.1.1 development
- karma-coverage ^2.2.0 development
- karma-firefox-launcher ^2.1.2 development
- karma-jasmine ^5.1.0 development
- karma-jasmine-html-reporter ^2.0.0 development
- karma-junit-reporter ^2.0.1 development
- karma-mocha-reporter ^2.2.5 development
- karma-opera-launcher ^1.0.0 development
- karma-viewport ^1.0.9 development
- ng-mocks ^14.1.0 development
- protractor ^7.0.0 development
- ts-node ^10.9.1 development
- typescript 4.7 development
- webpack-bundle-analyzer ^4.5.0 development
- @angular/animations 14.0.6
- @angular/cdk 14.0.5
- @angular/common 14.0.6
- @angular/compiler 14.0.6
- @angular/core 14.0.6
- @angular/forms 14.0.6
- @angular/google-maps 14.0.5
- @angular/localize 14.0.6
- @angular/platform-browser 14.0.6
- @angular/platform-browser-dynamic 14.0.6
- @angular/platform-server 14.0.6
- @angular/router 14.0.6
- @fortawesome/angular-fontawesome ^0.11.1
- @fortawesome/fontawesome-svg-core ^6.1.1
- @fortawesome/free-solid-svg-icons ^6.1.1
- @ng-bootstrap/ng-bootstrap 13.0.0-beta.1
- @ngneat/cashew ^3.0.0
- @nguniversal/express-engine 14.0.3
- @ngx-formly/bootstrap 6.0.0-rc.2
- @ngx-formly/core v6.0.0-rc.2
- @ngx-loading-bar/core ^6.0.2
- @ngx-loading-bar/http-client ^6.0.2
- @popperjs/core ^2.11.5
- @swimlane/ngx-datatable ^20.0.0
- @ui5/webcomponents ^1.5.0
- @vvo/tzdb ^6.52.0
- angular-date-value-accessor ^2.0.1
- bootstrap ^5.1.3
- buffer ^6.0.3
- d3-color ^3.1.0
- express ^4.18.1
- filesize ^9.0.11
- full-icu ^1.4.0
- http-status ^1.5.2
- humanize-duration ^3.27.2
- immutable ^4.1.0
- include-media ^1.4.10
- just-camel-case ^6.0.1
- just-snake-case ^3.0.1
- luxon ^3.2.1
- ngx-captcha ^11.0.0
- ngx-clipboard ^15.1.0
- ngx-cookie-service ^14.0.1
- ngx-device-detector ^4.0.0
- ngx-toastr ^15.0.0
- rxjs ^7.5.6
- tslib ^2.4.0
- zone.js ~0.11.6
