Giter Club home page Giter Club logo

boatnet's Introduction

Boatnet

Boatnet provides a suite of tools for collecting fisheries scientific survey and observer monitoring data while aboard commercial, recreational, and NOAA vessels. These include a tablet app for observers and surveys to capture their haul-level catch information and a mobile app for captains to keep track of observer-monitored trips.

For more details about each project, please refer to the Wiki

FRAM Screenshot: Tally App

For those only interested in running the project follow the How to build and run section and ignore the rest. The remaining sections are for development purposes only. Note: We are currently working on simplifying the process and in the future you can just download an executable and run the application.

Note that without a CouchDB, large sections of the application will not function correctly. We are working on releasing a test version of the CouchDB data.

Projects

Please refer to the Wiki for project descriptions. Also, see miscellaneous supporting Docs.

Boatnet contains multiple projects located in different directories. Note that all of the projects are currently a work in progress!

OPTECS (Observer Program Technology Enhanced Collection System)

Directory: apps/obs-wcgop-optecs

Observer Mobile Apps

Directory: apps/obs-web

Survey Applications

Directory: apps/surv-*

How to build and run

Boatnet uses the lerna + yarn workspace monorepo pattern.

  1. Install Node.js - download here

  2. Install yarn

  • npm install -g yarn

    NOAA Windows 10 Users may need to set a couple environment variables:

    • in System Variables - Path add: C:\Users\\[User.Name]\AppData\Roaming\npm\
    • in System Variables - NODE_PATH set to: C:\Users\\[User.Name]\AppData\Roaming\npm\
  1. (OPTIONAL) Install Visual Studio Code - download here (We use and recommend this IDE for development)

  2. Clone the repository: git clone [email protected]:nwfsc-fram/boatnet.git

  3. Install lerna globally: npm install -g lerna

  4. Run lerna bootstrap (runs npm install, builds single node_modules)

  5. Run lerna clean (cleans node_modules in subfolders)

  6. Run lerna run build (builds all apps and libraries. This is optional, but should be performed prior to pushing changes, to ensure all projects still build correctly.)

  7. When running the app locally, you'll need to run the dev-auth-server running in order to login. Do this by following the instructions here

  8. Navigate to the project you need, e.g. cd apps/example and yarn serve

  9. See more specific lerna instructions, troubleshooting, and development setup here.

Additional Comments

boatnet's People

Contributors

mak-noaa avatar makahmad avatar melinashak-noaa avatar metalsadman avatar montsaroffnoaa avatar nickshaffernoaa avatar saogaz-noaa avatar sethgerou-noaa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

boatnet's Issues

Run npm audit and fix critical/ high

Currently doing this for obs-electron.

It makes sense to do this after doing the npm outdated and npm update commands in ticket #7

To fix the security warnings that node spits out after an npm install, run npm audit and execute the suggested update commands to fix any critical or high (optionally Medium or Low if you want) warnings. . I'd avoid updating Low priority issues with a SEMVER WARNING: Breaking Changes warning.

There's an npm audit fix command which is supposed to do this automatically, but it's not working for me, so I did it manually.

Add Trip -

-- Select Permit, which then tells us the fishery

--- Non-Permitted Fisheries include:
---- Open Access
--- Permit Not Available (i.e. we haven't uploaded it yet)
---- Allow skipper to be able to type it in, want Observer staff confirmation
---- Or skipper potential enter their L number (CDFW license number)

-- Add Start Time
--- LOGIC - If trying to start within 48 hours, notice that they may be held up,
this is only for EM EFP. For non-EM EFP, will be reduced to 24 hours

-- Add End Time
-- Add Departure Port (default to the Home port in User Preferences)
-- Add Return Port (default to same as Departure Port)

User Preferences

-- Add Home Port field
-- Add Address fields
-- Add Banner / Alert options as well

Detail application configurations via json files

Specify how we will be creating and bundling applications for our different configurations using json configuration files. The initial configurations will include:

  • Observer-Electron
    -- WCGOP
    -- A-SHOP

  • Survey-Cutter
    -- Trawl Survey
    -- Hake Survey

I would note, for the Observer-Electron, we might actually want those different configurations to be specified on the fly within the application after the user selects the fishery, i.e. if A-SHOP is selected, use the A-SHOP configuration, else use the WCGOP configuration.

obs-electron: OpenSSL Dependency breaks npm install

npm install (from Visual Studio command prompt) yields an error that I hadn't seen until today:

LINK : fatal error LNK1181: cannot open input file 'C:\OpenSSL-Win64\lib\libeay32.lib' [C:\git\boatnet-local\observer\o
bs-electron\node_modules\rsa-keygen\build\rsa_keygen.vcxproj]

Fix will probably be to install http://slproweb.com/download/Win64OpenSSL-1_1_0i.exe (note the "i") to the C:\OpenSSL-Win64\ directory.

We'll need to update README/ CONTRIBUTING once I verify this is the only requirement to fix it.

OTS Footer

Implement footer functionality per page.
Also consider - should the footer be a solid bar, or would floating rounded buttons be nicer?

Trip Details: Basic Editing

When user Add Trip or Edit Trip from Trips page, load that trip into Trip Details and persist edits to PouchDB.

Update Data Models

This task is to move the shared data models from obs-electron into a fram-modules 'fram-models' module.

Create Debriefing Balsamiq Mockups

Leverage ideas from A-SHOP NORPAC Data Editor (NDE) and WCGOP OBSPROD Debriefing component, as well as McVeigh's excel proposed mockup.

Develop mockups

Create mockups using Balsamiq for the following platform screen sizes, orientations, and projects:

Platform + Orientations

  • Tablet landscape
  • Tablet portrait
  • Desktop landscape

Projects

  • Observer-electron
  • Survey-cutter

Minor fix + addition to obs-electron/README

Looks like img/visualStudioScreenshot.PNG needs to be added to the repo, noticed a broken image link on obs-electron/README.md

And one new addition:

If installed correctly, the build will be able to locate the file C:\OpenSSL-Win64\lib\libeay32.lib

Create instructions for our github workflow

We'll want to document git commands for our team workflow:

  1. creating feature branch
  2. keeping branch up-to-date with master via rebase or merge
  3. creating a pull request
  4. merging back into master

Finalize lookups data approach in CouchDB

In terms of actually populating these lookup documents, we could populate them in one of two ways:

  • Bulk populate up front with all of the OBSPROD lookups and other lookups data
  • Populate individual lookup documents as the need arises for given boatnet software components

We also need to determine if we will keep these lookup documents in the same couchdb instance as the user collected data or in a separate lookups couchdb instance.

obs-electron: Update packages

There is a useful command to check if your packages need upgrade (security updates, etc) which is:

npm outdated

This will show "Current", "Wanted" (which is newest compatible version), and "Latest" which can be incompatible with what you're running. Packages listed in red should be updated, and yellow is recommended. To automatically update your package.json to "Wanted" the command is:

npm update
This also seems to implicitly run npm install Then re-run to make sure everything's up to date:
npm outdated

Created this ticket to track this operation for obs-electron to try and reduce the security issue warnings. @sethgerou-noaa we should do this step regularly for obs-web as well.

Source for this I came across: https://docs.npmjs.com/getting-started/updating-local-packages

Implement Email notification

If user has selected "Email" in OTS User Config, they should receive an email any time the trip is modified - to include:
-Staff editing the trip
-A selection decision change
-A message being added to the trip
-A specific observer being assigned to the trip
-The trip status is changed

obs-electron: Error in node_modules/@angular/flex-layout/core/typings/observable-media/observable-media.d.ts

Currently getting this error on a clean install, when running ng serve:

ERROR in node_modules/@angular/flex-layout/core/typings/observable-media/observable-media.d.ts(11,14): error TS2416: Property 'subscribe' in type 'ObservableMedia' is not assignable to thesame property in base type 'Subscribable<MediaChange>'.  Type '(next?: (value: MediaChange) => void, error?: (error: any) => void, complete?: () => void) => Sub...' is not assignable to type '{ (observer?: PartialObserver<MediaChange>): Unsubscribable; (next?: (value: MediaChange) => void...'.    Types of parameters 'next' and 'observer' are incompatible.
      Type 'PartialObserver<MediaChange>' is not assignable to type '(value: MediaChange) => void'.
        Type 'NextObserver<MediaChange>' is not assignable to type '(value: MediaChange) => void'.
          Type 'NextObserver<MediaChange>' provides no match for the signature '(value: MediaChange): void'.

May be related to b269ce9
Fiddling with ng upgrade and will see if I can remedy.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.