Giter Club home page Giter Club logo

annotation-tool's Introduction

Opencast

Test Opencast

Open Source Lecture Capture & Video Management for Education

Opencast is a free, open-source platform to support the management of educational audio and video content. Institutions can use Opencast to produce lecture recordings, manage existing video, serve designated distribution channels, and provide user interfaces to engage students with educational videos.

Installation

Installation instructions can be found locally at docs/guides/admin/docs or in our online documentation.

Community

More information about the community:

annotation-tool's People

Contributors

arnei avatar christianoellers avatar comein-nrw avatar dependabot[bot] avatar ebbertd avatar github-canni avatar juliankniephoff avatar katrinihler avatar lkiesow avatar luniki avatar mliradelc avatar mtneug avatar oellers avatar rrolf 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

annotation-tool's Issues

Better highlighting of active annotations

Originally reported by: Julian Kniephoff (Bitbucket: JulianKniephoff, GitHub: JulianKniephoff)


In the context of pull request #14, @rrolf raised the issue that the highlighting of the active annotation(s) by a small red border is maybe not distinguished enough.

I would add that we might need to differentiate the highlighting a bit more, because annotations might be "active" for different reasons in different contexts (selecting it, the play head reaching its start time, commenting, ...).


The backend is very light on validation

Originally reported by: Julian Kniephoff (Bitbucket: JulianKniephoff, GitHub: JulianKniephoff)


The frontend might be as well, but that's not as severe.

Using manual REST calls outside the UI you could probably get to and update/delete almost everything. Now of course security might not be the biggest priority for the tool, but I still have a lot of tickets ahead of me that concern themselves with privacy of the various resources in the system. This is basically nonexistent at the moment.

A couple of examples:

  • I can only list tracks that I have access to, sure, but when I have the ID, I can still get the tracks data from the API. I can even delete it!
  • I can create annotations on tracks that I don't have access to when I have their IDs.
  • I can CRUD any annotation given its ID
  • Other fun things like creating annotations on nonexistent tracks; foreign key constraints are not enforced anywhere.
  • etc.

Also the few things that are checked, are checked in inconsistent locations. Some in the REST service, some in the persistence layer.


Open items that are associated with current play time

Originally reported by: Rüdiger Rolf (Bitbucket: rrolf, GitHub: rrolf)


Items in the item list should be open, if the current playtime is covered by them. They should be closed if the playtime is beyond their OUT time (Items without an OUT time should probably have a default length for this feature, maybe 5s).

Items opened manually should not be closed automatically.


External API does not exists in the presentation distribution

Originally reported by: Matthias Neugebauer (Bitbucket: mtneug, GitHub: mtneug)


The annotation tool assumes that the current Opencast instance has a running external API. This is not the case when running within the presentation distribution which is part of a multi-node setup. Using admin's external API would work as the session cookies will not be transferred.


Avoid losing half written comments

Originally reported by: Julian Kniephoff (Bitbucket: JulianKniephoff, GitHub: JulianKniephoff)


Currently, only one annotation can be in "add a comment"-mode. When I initiate commenting an annotation (either by the "speech bubble"-button or by the commenting shortcut) while working on a comment for another annotation, I will lose what I have already written up to that point.

It is unclear to me, though, what the desired behavior should be:

  • Do we annoy the user whenever they cancel editing a comment by any means possible?
    • i.e. also when they start creating another comment, which would then fail?
  • Do we just allow multiple WIP comments and let them clutter the interface?

too many annotations in one track at a certain time

Originally reported by: Rüdiger Rolf (Bitbucket: rrolf, GitHub: rrolf)


If more than 3 annotations are at the same time they are printed above each other and might be shown in the track above.

So more that 3 annotations at the same time should be displayed differently. There should be probably the first annotation and a triangle icon that indicates that there are more annotations at this time. Maybe a number could show the amount of hidden annotations.

If the user hovers the triangle a bubble could come up showing the hidden annotations.

If the user clicks on the triangle the tracks height is adapted so that all annotations can be shown.

One specific label can only be available at a time once. If it is added multiple times only the label with the longest duration will remain.


`null`-error in export

Originally reported by: Julian Kniephoff (Bitbucket: JulianKniephoff, GitHub: JulianKniephoff)


When there are users without an email address (i.e. their email address is NULL in the users table), the export throws an exception:

java.lang.Error: null must not be wrapped in a some
  at org.opencastproject.util.data.Option.some(Option.java:193)
  at org.opencastproject.util.data.Option$1.fmap(Option.java:209)
  at org.opencastproject.util.data.Option.map(Option.java:57)
  at ch.entwine.annotations.endpoint.AbstractExtendedAnnotationsRestService.writeExport(AbstractExtendedAnnotationsRestService.java:1899)
  at ch.entwine.annotations.endpoint.AbstractExtendedAnnotationsRestService.access$1200(AbstractExtendedAnnotationsRestService.java:105)
  at ch.entwine.annotations.endpoint.AbstractExtendedAnnotationsRestService$46.write(AbstractExtendedAnnotationsRestService.java:1851)
  at org.apache.cxf.jaxrs.provider.BinaryDataProvider.writeTo(BinaryDataProvider.java:107)
  at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:248)
  at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:139)
  at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:78)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
  at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:78)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
  at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
  at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
  at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
  at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:139)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
  at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
  at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
  ...

To quote @mtneug (see #21):

This happens because Option with the user id (a some value) is mapped to the E-Mail address, which is null in AbstractExtendedAnnotationsRestService.java line 1899.


Improve loading an appropriate (media package) track into the player

Originally reported by: Julian Kniephoff (Bitbucket: JulianKniephoff, GitHub: JulianKniephoff)


The tool currently filters the tracks of the media package it receives by certain flavours. Instead we should probably use tags for that. We could look for engage-download (or engage-streaming if/when we support streaming ;)) or invent our own tag. (I have no idea how we would get that tag onto videos yet, though. #opencastnoob)

This would also make the tool work with the fast Opencast testing workflow, which it currently doesn't because the flavours that this creates are ignored by the filtering mentioned above.


Get rid of the index.html in the URL

Originally reported by: Julian Kniephoff (Bitbucket: JulianKniephoff, GitHub: JulianKniephoff)


It should not be necessary to explicitly type index.html as part of the URL for the annotation tool. It actually is not strictly necessary in the sense that /annotation-tool is redirected to /annotation-tool/index.html, but during this redirection, the URL parameters, which are currently used to pass the media package ID to the tool, are forgotten.

While we are at it, we might also rethink the way the tool gets ahold of the ID and the video itself.


Make our build/development process more independent of Opencasts

Originally reported by: Julian Kniephoff (Bitbucket: JulianKniephoff, GitHub: JulianKniephoff)


This is only an idea at the moment since I don't know what all this would entail, but here are some stray thoughts to delineate what I am driving at:

It is not nice that we either have to use a specific version of Opencast to work on things that touch the backend,namely the one that is currently stated in the pom.xml of the backend components, or we have to change said pom.xml like I did in pull request #6. The users even might have to change that version, too, because they might use yet another Opencast version. (Specifically they probably run a non-snapshot version, right?)

The fact that we have to physically copy the backend components into Opencast is not all that nice as well. I currently have them symlinked, which might actually be good enough. This is more important for the developers convenience as it is for the users' because they typically only do this once (in a while). However, simplifying this one time setup would not hurt the users, either. ;) The least we could do is provide better documentation for the development workflow with the backend and maybe even a script or Grunt task to simplify it.

Related to that, there is also the question of whether we really want a built version of the frontend in the repository, which should normally not contain any build artifacts, in my opinion. Maybe this is worth another issue, though.

There might be more and I will try to update this issue as I learn more, because honestly I don't know enough about Grunt, Maven and OSGi at the moment. ;)

Thoughts and opinions are welcome. :)


UI translation

Originally reported by: Rüdiger Rolf (Bitbucket: rrolf, GitHub: rrolf)


Include a lib that will allow a translation of the annotation tool.

Use the lib to translate every text in the UI.

Use Crowdin for the translation of the UI.

Add configuration to pull new translations from Crowdin automatically.

Make sure to use the full qualified language identifiers (like en-US) as we have several users in the Opencast community that use sub-languages.


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.