workbench-client

workbench-client: a client side browser application for interacting with acoustic workbenches

https://github.com/qutecoacoustics/workbench-client

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
Last synced: 10 months ago · JSON representation

Repository

workbench-client: a client side browser application for interacting with acoustic workbenches

Basic Info
  • Host: GitHub
  • Owner: QutEcoacoustics
  • License: other
  • Language: TypeScript
  • Default Branch: master
  • Homepage:
  • Size: 35.3 MB
Statistics
  • Stars: 9
  • Watchers: 3
  • Forks: 1
  • Open Issues: 267
  • Releases: 1
Created almost 7 years ago · Last pushed 10 months ago
Metadata Files
Readme Contributing License Code of conduct Zenodo

README.md

Workbench Client

The Angular client for an acoustic workbench application.

Build, Test, and Publish DOI Docker Image Version (latest semver)

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. | development
staging
production | | endpoints.apiRoot | Any API requests made from the app will use this value for its base and append routes to it | https://ecosounds.org
https://ecosounds.org:3000
https://ecosounds.org/api | | endpoints.clientOrigin | This is the origin of where the website will be hosted | https://ecosounds.org
https://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.

  1. Copy and extract a release to a statically served directory like public
  2. Template your environment.json and place it in the public/workbench-client/assets directory
  3. Ensure whatever routing solution you have can route requests for SPA with a wildcard route, excepting the assets folder

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

  1. Template your environment.json file, and example can be found at ./src/assets/environment.json
  2. 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

  1. 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.

The Open Ecoacoustics Logo

Owner

  • Name: QUT Ecoacoustics Research Group
  • Login: QutEcoacoustics
  • Kind: organization
  • Location: Brisbane, QLD, Australia

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
enhancement (76) bug (38) ui feature (35) architecture (31) user reported (23) triage:low (10) stakeholder: recognizer notebook (7) Stakeholder: PE (7) dependencies (6) stakeholder: DT (5) triage:high (5) design (4) triage:medium (4) discuss (3) stakeholder: LZ (3) CI (3) missing tests (2) blocking/blocked (2) ssr (2) Stakeholder: P (1) env:production (1) wontfix (1)
Pull Request Labels
dependencies (30) enhancement (26) automerge (21) architecture (19) bug (18) ui feature (9) user reported (6) triage:medium (3) triage:high (3) work in progress (3) triage:low (2) CI (2) design (2) stakeholder: DT (1) ssr (1)

Dependencies

.github/workflows/differ.yml actions
  • actions/checkout v2 composite
  • actions/setup-node v2 composite
  • preactjs/compressed-size-action v2 composite
.github/workflows/publish.yml actions
  • actions/checkout v2 composite
  • docker/login-action v1 composite
.github/workflows/workflow.yml actions
  • 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
Dockerfile docker
  • node 18-alpine build
  • node 14-alpine build
package-lock.json npm
  • 1340 dependencies
package.json npm
  • @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