Coder Social home page Coder Social logo

syncpoint / odinv2 Goto Github PK

View Code? Open in Web Editor NEW
27.0 6.0 6.0 24.99 MB

Open Source Command and Control Information System (C2IS)

License: GNU Affero General Public License v3.0

JavaScript 97.04% Rich Text Format 0.15% CSS 1.75% SCSS 1.07%
mil-std-2525

odinv2's Introduction

ODINv2 - Open Source Command and Control Information System (C2IS)

ODINv2 is the successor of ODINv1. ODIN has been completely rewritten and enables a wide range of new features such as layer-level links and styles, searchable #tags for features, layers, symbols, etc.

Online collaboration

Replication in a distributed command and control environment by making use of the [matrix] ecosystem is here. Make sure to join our [matrix] ODIN Community Chat Room to get the latest news about ODIN.

ODINv2 C2IS

Migration from ODINv1

ODINv2 will migrate all of your existing ODINv1 projects on first start. You will be able to further use ODINv1 in parallel but we will not update newly or updated projects after the first start of ODINv2. If you do have any ODINv1 layer files (*.json) you can import them at any time via drag&drop onto the ODINv2 map.

Configuration via environment

Self-Update

Self-Update is enabled by default and ODIN will check for newer versions. In order to disable Self-Update one can use the environment variable ODIN_SELF_UPDATE with a value of 0.

License

Copyright (c) Syncpoint GmbH. All rights reserved.

Licensed under the GNU Affero GPL v3 License.

When using the ODIN or other GitHub logos, be sure to follow the GitHub logo guidelines.

odinv2's People

Contributors

dehmer avatar harrywipperfuerth avatar thomashalwax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

odinv2's Issues

improve project list / get rid of fetch

The local-only version of the project list relies on the very responsive local level db. By introducing replication we added a lot of delay when fetching projects the user is invited to join.

  • filtering is extremely slow since every keystroke re-schedules fetch
  • handling "live" invitations results in an empty list because replication is undefined

This component should be re-written in order to get rid of these problems.

Allow disabling self-update

ODIN is often used in closed environments without connection to the githup releases url. In order to avoid error messages caused by not reaching the update url we should allow users to disable the auto-update option.

duplicate project entries

When a user joins a shared project we create a local project with the same id. Since the server may not be fast enough to remove the project from the list of invitations we sometimes end up with duplicate project entries.
We need to de-duplicate them in favor of the local projects.

MGRS markings on PDF map are covered by scale-bar

On the PDF map we place markings in the S/W and N/E corder in order to have reference points when used as an overlay on paper maps. The markings in the S/W are often covered by the scale-bar. To avoid this we should move the scale bar either to the top/left corner.

add button/link to allow changing type of existing symbol

By employing CMD+K one can open the command palette and use it to change the type of an existing symbol. This is kind of a hidden feature since it is documented nowhere and there is no button/link to open it.

We should add a button/link in the properties pane in order to make this functionality more accessible.

image

Add tooltips to ease user navigation

We received user feedback that it's hard to get started with ODINv2. We should add tooltips to ease user navigation (we already had them in v1).

feature.js:58 TypeError: symbol.asSVG is not a function

TypeError: symbol.asSVG is not a function
at svg (symbol.js:16:1)
at OptionStore._callee$ (feature.js:56:1)
at tryCatch (feature.js:2:1)
at Generator. (feature.js:2:1)
at Generator.next (feature.js:2:1)
at asyncGeneratorStep (feature.js:13:1)
at _next (feature.js:14:1)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
_callee$ @ feature.js:58

Shared projects with detailed permissions

As of today everyone that has joined a shared project can add new shared layers and invite others to the project.

It should be possible to define roles like

  • user: can join the project and add some layers
  • manager: rename the project and invite users to the project / kick users from the project

Different Map Layer

How can I implement different map layer. Satellite, terrain or something else.?

remove label for single-segment line measurement

When measuring distances we add labels in the middle of each segment and on the end of the line string. For a single-segment line string we should avoid placing a second label at the end that contains exactly the same information.

port missing symbols from ODINv1

We still have groups of symbols that have not been ported to ODINv2:

  • SKKM (National/Austria)
  • ATP-112
  • Task Verbs (National/Austria)

Shared layers with detailed permissions

As of today all users that joined a shared layer have the same permissions. Everyone is allowed tho add, update and remove features in the layer and can change the layer name, too. In addition everyone is allowed to invite others to join the shared layer.

It should be possible to share layers with detailed permissions. The creator and managers of the layer have the power to manage the power level of joined users to be one of

  • user (read only)
  • editor (add, update, remove) features
  • manager (change name of layer, invite & kick users)

export layers is not reliable

When exporting a selected layer in many cases the first attempt results in an empty file. Subsequent attempts will create the desired content eventually. Looks like we have an async call that we do not wait for :-|

"ENOENT: no such file or directory" error during the migration of ODINv1 projects

A user managed to open ODINv1 without creating a preference file. During the migration to ODINv2 an error occured:

(node:17623) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/home/USERNAME/ODIN/projects/73d30a86-b57b-4a72-b3b6-9d6744660145/preferences.json'
(Use `electron --trace-warnings ...` to show where the warning was created)
(node:17623) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)

We need to check the existence of files more accurately.

Visualize elevation profile for any line string or polygon

After introducing terrain / elevation data with #41 the next step would be the visualization of elevation profiles for linestrings and polygons:

  • user selects any measurement or linestring-based (bearing, route, boundary, ...) or polygon-based (area) symbol
  • users clicks on "generate elevation profile"
  • the elevation profile should be displayed

Examples:
RechenRaum VOIBOS
How to draw elevation profile for your path
OpenLayers Extensions Elevation Profile

temporary files in restricted environments (MS Windows)

Some clients are very restrictive regarding executable files. On MS Windows the current electron installer creates a setting where files are extracted/expanded into the user's temporary folder. The usage of these files is forbidden in restricted areas, thus the installer needs to extract them into the %PROGRAM_FILES% folder during the installation.

ODIN-blocked

Make is easy to set value of DTG property to now()

If a symbol receives a position update the DTG should get updated as well. In order to do this as quickly and accurate as possible we should add a button near the DTG properties field that sets the value of the DTG to now(). The Format of the DTG should be the military format DDHHMMTMMMYY (eg 151557Bsep23).

text styling for tactical graphics

Since the text of some tactical graphics (like objective, phase lines, etc) might be hard to read on some map backgrounds we should provide a styling option per layer that allows the user to

  • change the font size
  • set the font weight to bold

Zoom dependent layers

Setting a zoom level for a layer to be displayed would allow modeling sites with greater detail without clutter when zoomed out

export and import layers

In order to archive, share, ... layers and its content there should be a way to export a single layer to a (JSON) file. The same file should be importable (via Drag&Drop onto the map) and create a CLONE of the original data.

implement MGRS graticule

A MGRS graticule is essential for the communication with troops working with paper-based maps.

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.