Giter VIP home page Giter VIP logo

concerto-hardware's Issues

Develop file management utility

Develop an infrastructure to manage the pushing of files to Concerto Players - X configs, certificates, software updates, etc.

Automatically link screens

The workflow for creating a new player is to click the Hardware: add link in screens/show. Right now, the user has to then enter the screen ID in the player#new form once they click the link.

Instead, we should pass a screen_id GET parameter as part of that link, and use that for the new player. It would probably make sense to hide the Screen ID field (since there's no reason to change it) and just show the screen name.

screen on/off validation and interface

Since times can't wrap, should probably validate that begin time is before end time.

Weekend time fields should be disabled or hidden if the "Disable on weekends" checkbox is checked.

Hardware controlled screen flickers (DPMS)

Upon having @emalac deploy a hardware-controlled screen, the screen will at times begin flickering on and then off. I set what I thought to be reasonable on and off times that wouldn't even coincide with the UTC time in case this was a time zone interpretation issue.

@gbprz I know you had this issue in the past. Was there a resolution?

how is the screen turned on or off?

I'm assuming that there is different methods to do this for the different kinds of displays, so where do you specify the actual hardware type so (bandshell?) will know how to do it?

Or will it just use some x command to do it?

Implement Player Initialization

Provide the action for a new screen to register itself, and a seperate view/action for the administrator to verify the screen and get directed to its configuration options.

Rails 4: Player Model Time Attributes broken

It seems the setter from attr_accessor via our time_accessor method is being overwritten. Everytime a call is made, for example to wkday_on_time=, it seems to get sucked up by ActiveModel, which attempts to interpret it is a DB field. wkday_on_time= is called in :after_find so the plugin is non-viable while this bug exists.

ActiveModel seems to be doing some funny things these days (aliasing method_missing for one). Some investigation is required to see if the on-the-fly attr_accessor approach is still valid.

ActiveModel::MissingAttributeError in ConcertoHardware::PlayersController#show
can't write unknown attribute `wkday_on_time'
vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.6/lib/active_record/attribute_methods/write.rb:93:in `write_attribute_with_type_cast'
vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.6/lib/active_record/attribute_methods/write.rb:58:in `write_attribute'
vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.6/lib/active_record/attribute_methods/dirty.rb:68:in `write_attribute'
vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.6/lib/active_record/attribute_methods.rb:395:in `[]='
vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.6/lib/active_record/aggregations.rb:255:in `block (2 levels) in writer_method'
vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.6/lib/active_record/aggregations.rb:255:in `each'
vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.6/lib/active_record/aggregations.rb:255:in `block in writer_method'
/home/mike/dev/concerto-hardware/app/models/concerto_hardware/player.rb:107:in `block in retrieve_screen_on_off'
/home/mike/dev/concerto-hardware/app/models/concerto_hardware/player.rb:102:in `each'
/home/mike/dev/concerto-hardware/app/models/concerto_hardware/player.rb:102:in `retrieve_screen_on_off'

Can't change weekend off time from 8PM

Odd as it may seem, I'm unable to change my screen weekend off time away from 8PM. I set the control for weekend on at 1PM and off at 3PM, but the off value remains 8PM. I'm able to change the weekday on and off times without incident.

Access Denied in API causes redirect

For example, GETing /hardware/players/by_screen/1.json without appropriate permissions does a 302 redirect to /users/sign_in. Better would be to detect that this is a non-interactive format and render a 403 with empty data instead.

Some research is needed to decide whether this should be done on a piecemeal basis or just made part of the exception handler in Concerto.

Remove secret from schema

Secrets are now handled by Concerto proper. I have to look in to whether the best way to change the schema is to add another migration or to just modify the existing one (leaving existing deployments in the lurch, but there are not many). Low priority.

remove new player button from all players list?

Because a player must be connected with a screen [and you can easily add one from there], and because the screen_id field is now a hidden field in the form, perhaps we should remove the "New Player" button from the All Players view?

Currently if you used this button you cant specify the screen and hence it never validates.

Implement Screen Control Selection

Each Player should have information about how to control its screen. For the purposes of this ticket we will only implement control method selection, but it should be implemented so more parameters may be added in the future.

Since this is likely to evolve, it might be best implemented as serialized JSON, as was done with the screen_on_off field. The field could be called screen_control_info.

The JSON should represent a hash. Right now there will only be one key, method. the associated value would be a string determining the control type, initially either dpms (default) or none.

The Player owner should be able to control this through the Edit Player view. This information should be available to the Player through the API.

Implement Player API

Ensure necessary data (for example Screen information) is displayed and private data (hashed secret) is not. Make sure proper authorizations are in place for the views that the Player will talk to.

Resolution and Rotation Control

Provide UI and a database object that allow the user to optionally override the resolution (px x px) and rotation (normal, left, right, inverted) of the player's graphics card.

Storage will likely take the form of a JSON blob in the database since it need not be indexed or searchable, and may grow over time.

Future modifications may include overscan/underscan adjustment and reflection, though these are probably not priorities right now.

why is view stuff in engine.rb?

@mikldt or @augustf I'm wondering why this view stuff is in the engine.rb

        add_view_hook "ScreensController", :screen_details, :text => "<p><b>All systems:</b> go</p>"
        add_view_hook "ScreensController", :screen_details do
          "<p><b>Name via View Hook:</b> "[email protected]+"</p>"
        end

since the screen_link is already wired up here...

     add_view_hook "ScreensController", :screen_details, :partial => "concerto_hardware/screens/screen_link"

and can't it be moved into the screen_link partial? And shouldn't the partial be renamed to screen_details?

controller questions

Why do you have the require and screen_api filter in the controller? When will other plugins need these?

require_dependency "concerto_hardware/application_controller"

module ConcertoHardware
class PlayersController < ApplicationController
  unloadable #marks this class for reloading in between requests
  #include routes.named_routes.helpers
  before_filter :screen_api

Capture Player IP Address

We should capture the player IP address from the API rather than having the user enter it into the form. The UI should then link to the status and configuration pages on the Bandshell server.

Ideally it would only write to the database when the recorded IP address is nil or different from the reported one.

A bonus might be to check whether it is routable from the server (could be a delayed job). This would be informative to the user and possibly useful down the line in a pseudo-push scenario. In this case we could store some serialized data (address, last updated, and routability) rather than just the address.

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.