Coder Social home page Coder Social logo

sitcomlab / ive Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 7.0 21.65 MB

The Immersive Video Environment

Home Page: https://sitcomlab.github.io/IVE/

License: MIT License

JavaScript 62.13% HTML 36.39% CSS 1.40% Shell 0.04% Dockerfile 0.04%
angularjs environment immersive immersive-video-environment neo4j-database nodejs rest-api video websocket-api

ive's People

Contributors

albertios avatar bkari02 avatar dependabot[bot] avatar jsten07 avatar nicho90 avatar noerw avatar nphil01 avatar paulascharf avatar simonpepe avatar snavas avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

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

ive's Issues

User management

Implementation of user accounts to create and manage own Scenarios.

Full-text search

Refactor search in Backend with a server-side full-text search

Map view

A map showing all locations with markers (abstract, indoor, outdoor) and their related connected_to relationships.

  • Main map view
    • Load all locations
    • Load related connected_to relationships (in a later version)
  • Create location map to set coordinates by marker (working, but no marker is set; still in progress)
  • Edit location map to set coordinates by marker (working, but no marker is set; still in progress)

viewer / remote: support multiple concurrent sessions

For multi-seat usage in the context of using the IVE platform for remote / from-home studies, we need to separate the websocket events into session namespaces.

  • socket.io has a feature just for that, this should be easy to implement
  • server-side stored state in controllers/sockets.js also needs to be namespaced by session-ID
  • Session IDs could be randomly generated could be passed via an URL parameter to the viewer and remote.
  • For the remote, a further enhancement would be to
    • listing active sessions, so they can be easily switched without manually changing the URL.
    • creating new sessions

Renaming lat, lng to latitude, longitude

to support spatial capabilities in Neo4j 3.x, using the point({latitude, longitude}) class as well as the built in function distance(point(a), point(b)): http://www.jexp.de/blog/html/full-text-and-spatial-search-in-neo4j-3.html

  • Rename lat to latitude and lng to longitude in all apiControllers, controllers, templates and services
  • Delete all lat and lng values in all indoor locations and introduce x, y values instead. This highlights the different reference systems of indoor & outdoor locations.

production DB cleanup

the production DB contains lots of trash, which makes navigating content difficult

Add thumbnails

  • Add thumbnails for videos
  • Add preview maps for locations

Multiple language support

Translated names & descriptions for Scenarios, Locations, Videos (this includes some changes in the database schema):

1st example

Example location

  • name: Institute for Geoinformatics in English
  • name: Institut Für Geoinformatik in German

2nd example

Example location

  • name: GEO1 - Lecture room in English
  • name: GEO1 - Hörsaal in German

Refactoring

  • attribute formatting in apiControllers
  • Error messages in apiControllers
  • Backend templates & controllers
  • Fix translations (in progress)
  • Renaming _id in _uuid

REST-API

REST-API endpoints, which are an alternative way to interact with the IVE (Frontend) next to the already implemented websockets. The websockets are still used inside the apiControllers to forward the messages to the Frontend.

add location history logging

To evaluate studies, it's helpful to automatically store results.
What to store is rather study-specific, but having a general framework for action-logging (serverside?) would simplify implementations for specific studies: an ActionLogger interface, where specific data of an action can be selected for logging.

interface ActionLogger {
  onScenarioChange(new: State, old: State): any // if !!result, it will be passed to `outputHandler()`
  onLocationChange(new: State, old: State): any
  onOverlayChange(new: State, old: State):  any
  outputHandler(logdata: any): void // if not defined, output will be written to ./action_history.json
}

type State = {
  scenario: Scenario
  location: Location
  overlays: Overlay[]
}

Minimum output would be to store events in a JSON / CSV log file.
An enhanced implementation would provide a CRUD UI for these logs.
This feature would go well together with #64.

test

I tested new project cards on GitHub in relation with an issue.

migrate away from bower

..its deprecated since a long time.

When sourcing dependencies from npm instead, adding a buildsystem becomes necessary.
I started this work already, but lost it due to my failed-upgrade-lost-backup-fuckup.
I used esbuild as a build system, as it's far easier to configure than webpack, and also much faster.

(Vendoring all frontend dependencies does not require a build system, and is probably easiest, considering that these dependencies don't need frequent updates)

Renaming name property

to more specific name property to avoid name conflicts in Cypher queries (especially in list all relationships queries).

Update database schema

  • Scenarios: Rename name to scenario_name
  • Locations: Rename name to location_name
  • Videos: Rename name to videos_name
  • Overlays: Rename name to overlays_name

Update apiControllers

  • POST scenario
  • PUT scenario
  • POST location
  • PUT location
  • POST video
  • PUT video
  • POST overlay
  • PUT overlay

Update controllers in Backend

  • ...

Update services in

  • ...

Documentation

Write documentation for the missing sections:

  • Installation
  • Import data
  • Graph structure
  • Troubleshooting
  • About

missing threejs script / threejs dependency version is not pinned in bower.json

As a result, we already have breaking changes with threejs, and in the future more breakage is likely to ensue.

Loading failed for the <script> with source “http://localhost:5000/bower_components/three.js/examples/js/Detector.js”.

This script is not present anymore in the latest threejs version, needs some detective work to restore it from previous versions, or to migrate away from it. It doesn't seem to be required for core functionality of the viewer

Update README

with a small description and the link to the project site for installation and documentation

CMS: various issues

  • no login form
    • every change to another page the alert "wrong username or password appears although no password or username has to be entered (#68)
  • Adding location or Video the map is not displayed
  • Overlays added via CMS are not shown in remote control (?)
  • CMS: adding .obj overlay not working | obj overlay does not appear in video (+ while adding an obj overlay to a scenario it is not colored and difficult to position)

see also #69

Update documentation

  • Add section about .env file
  • Add section about video materials and public links to Sciebo drive for an example video file (GEO1 entrance)
  • Add meta-graph + query

Logging

for testing, debugging and user studies

Unify config files

Remove multiple config.js in Backend, Frontend and Remote and unify them into a single config.js files in the public folder

File upload

Add a video file when creating a video and uploading in to the server.

Setup script

Setup script to run install/install.cypher and install/import.cypher automatically.

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.