Changeset - 6059de6659c3
[Not reviewed]
default
2 4 2
Drew Perttula - 8 years ago 2017-06-01 09:03:09
drewp@bigasterisk.com
move effects/ page into web/. fix homepage list. rm old subserver code.
Ignore-this: df247afa405eb7e3a80891c2806d5fed
6 files changed with 21 insertions and 79 deletions:
0 comments (0 inline, 0 general)
bin/effecteval
Show inline comments
 
#!bin/python
 

	
 
from __future__ import division
 
from run_local import log
 
from twisted.internet import reactor
 
from twisted.internet.defer import inlineCallbacks, returnValue
 
import cyclone.web, cyclone.websocket, cyclone.httpclient
 
import sys, optparse, logging, subprocess, json, itertools
bin/subserver
Show inline comments
 
@@ -14,51 +14,12 @@ from light9.rdfdb.syncedgraph import Syn
 
from light9.rdfdb.patch import Patch
 
from light9.namespaces import L9, DCTERMS
 
from light9 import networking, showconfig
 

	
 
from lib.cycloneerr import PrettyErrorHandler
 
        
 
liveClients = set()
 
def sendToLiveClients(d=None, asJson=None):
 
    j = asJson or json.dumps(d)
 
    for c in liveClients:
 
        c.sendMessage(j)
 

	
 
class Live(cyclone.websocket.WebSocketHandler):
 
    def connectionMade(self, *args, **kwargs):
 
        log.info("websocket opened")
 
        liveClients.add(self)
 
        self.settings.onNewClient()
 

	
 
    def connectionLost(self, reason):
 
        log.info("websocket closed")
 
        liveClients.remove(self)
 

	
 
    def messageReceived(self, message):
 
        log.info("got message %s" % message)
 
        self.sendMessage(message)
 
        
 
class EffectsUpdates(cyclone.websocket.WebSocketHandler):
 
    def connectionMade(self, *args, **kwargs):
 
        self.connected = True
 
        self.settings.graph.addHandler(self.onGraphChange)
 
        
 
    def connectionLost(self, reason):
 
        self.connected = False
 
        
 
    def onGraphChange(self):
 
        if not self.connected:
 
            return
 
        graph = self.settings.graph
 
        classes = []
 
        for e in graph.subjects(RDF.type, L9['Effect']):
 
            classes.append({'uri': e,
 
                            'label': graph.label(e),
 
                            'code': graph.value(e, L9['code'])})
 
        self.sendMessage({'classes': classes})
 

	
 
class Static(PrettyErrorHandler, cyclone.web.StaticFileHandler):
 
    def get(self, path, *args, **kw):
 
        if path in ['', 'effects']:
 
            return self.respondStaticJade("light9/subserver/%s.jade" %
 
                                          (path or 'index'))
 
            
 
@@ -113,45 +74,15 @@ if __name__ == "__main__":
 
    (options, args) = parser.parse_args()
 

	
 
    log.setLevel(logging.DEBUG if options.verbose else logging.INFO)
 

	
 
    graph = SyncedGraph(networking.rdfdb.url, "subServer")
 

	
 
    d = {}
 
    def updateSubs():
 
        subs = []
 
        for sub in sorted(graph.subjects(RDF.type, L9['Submaster'])):
 
            rec = {'uri' : sub}
 
            rec['isLocal'] = graph.contains((sub, RDF.type,
 
                                             L9['LocalSubmaster']))
 
            rec['label'] = graph.label(sub)
 
            rec['img'] = newestImage(sub)
 
            subs.append(rec)
 
        
 
        d.clear()
 
        d.update({'subs': subs})
 

	
 
        d['chases'] = []
 
        for chase in sorted(graph.subjects(RDF.type, L9['Chase'])):
 
            fakeLabel = chase.rsplit('/', 1)[-1]
 
            d['chases'].append({
 
                'uri': chase,
 
                'label': fakeLabel,
 
            })
 
        
 
        sendToLiveClients(d=d)
 
    def onNewClient():
 
        sendToLiveClients(d=d)
 
        
 
    graph.addHandler(updateSubs)
 
    
 
    
 
    port = networking.subServer.port
 
    reactor.listenTCP(port, cyclone.web.Application(handlers=[
 
        (r'/live', Live),
 
        (r'/effectsUpdates', EffectsUpdates),
 
        (r'/snapshot', Snapshot),
 
        (r'/(.*)', Static,
 
         {"path" : "light9/subserver",
 
          "default_filename" : "index.jade"}),
 
        ], debug=True, graph=graph, onNewClient=onNewClient))
 
    log.info("serving on %s" % port)
light9/web/effects/effects.coffee
Show inline comments
 
file renamed from light9/subserver/effects2.coffee to light9/web/effects/effects.coffee
light9/web/effects/index.html
Show inline comments
 
file renamed from light9/subserver/effects2.html to light9/web/effects/index.html
 
@@ -42,20 +42,21 @@
 
    </dom-module>
 
    
 
    <dom-module id="light9-effects">
 
      <template>
 
        <style>
 
        </style>
 
        <h1>Effects</h1>
 
        <rdfdb-synced-graph graph="{{graph}}"></rdfdb-synced-graph>
 

	
 
        <template is="dom-repeat" items="{{effectClasses}}">
 
          <light9-effect-class graph="{{graph}}" uri="{{item}}"></light9-effect-class>
 
        </template>
 
        
 
      </template>
 
    </dom-module>       
 

	
 
    <light9-effects></light9-effects>
 

	
 
    <script src="effects2.js"></script>
 
    <script src="effects.js"></script>
 
  </body>
 
</html>
light9/web/index.html
Show inline comments
 
<!doctype html>
 
<html>
 
  <head>
 
    <title></title>
 
    <title>light9 home</title>
 
    <meta charset="utf-8" />
 
    <script src="/lib/webcomponentsjs/webcomponents-lite.min.js"></script>
 
    <link rel="stylesheet" href="/style.css">
 
    <script src="/lib/webcomponentsjs/webcomponents-lite.min.js"></script>
 
    <link rel="import" href="/lib/polymer/polymer.html">
 
  </head>
 
  <body>
 
    <dom-module id="service-button-row">
 
      <template>
 
        <style>
 
@@ -20,17 +19,20 @@
 
         div:hover {
 
             background: gray;
 
         }
 
         .left {
 
             display: inline-block;
 
             margin-right: 3px;
 
             flex-grow: 1;
 
         }
 
         .window {
 
         }
 
        </style>
 
        <div>
 
          <span class="left"><a class="big" href="{{name}}/">{{name}}</a></span>
 
          <span><button on-click="click">window</button></span>
 
          <span class="window"><button on-click="click">window</button></span>
 
          <span><a href="{{name}}/stats">stats</a></span>
 
        </div>
 
      </template>
 
      <script>
 
       HTMLImports.whenReady(function () {
 
           Polymer({
 
@@ -49,19 +51,26 @@
 
    
 
    <h1>light9 home page</h1>
 

	
 
    <div style="float: left">
 
      <service-button-row name="."></service-button-row>
 
      <service-button-row name="rdfdb"></service-button-row>
 
      <hr>
 
      <service-button-row name="ascoltami"></service-button-row>
 
      <hr>
 
      <service-button-row name="picamserve"></service-button-row>
 
      <service-button-row name="vidref"></service-button-row>
 
      <hr>
 
      <service-button-row name="collector"></service-button-row>
 
      <service-button-row name="effectSequencer"></service-button-row>
 
      <service-button-row name="ascoltami"></service-button-row>
 
      <service-button-row name="live"></service-button-row>
 
      <service-button-row name="effects"></service-button-row>
 
      <service-button-row name="timeline"></service-button-row>
 
      <service-button-row name="paint"></service-button-row>
 
      <service-button-row name="effectEval"></service-button-row>
 
      <hr>
 
      <service-button-row name="subServer"></service-button-row>
 
      <service-button-row name="picamserve"></service-button-row>
 
      <service-button-row name="vidref"></service-button-row>
 
      <service-button-row name="live"></service-button-row>
 
      <service-button-row name="timeline"></service-button-row>
 
      <service-button-row name="subComposer"></service-button-row>
 
    </div>
 
    
 
  </body>
 
</html>
makefile
Show inline comments
 
@@ -104,13 +104,13 @@ arduino_upload: /usr/share/arduino/Ardui
 
	cd rgbled
 
	make upload
 

	
 
effect_node_setup: create_virtualenv packages binexec install_python_deps
 

	
 
coffee:
 
	zsh -c 'coffee -cw light9/web/{.,live,timeline,paint}/*.coffee'
 
	zsh -c 'coffee -cw light9/web/{.,live,timeline,paint,effects}/*.coffee'
 

	
 
env-mypy/bin/mypy:
 
	mkdir -p env-mypy
 
	virtualenv -p /usr/bin/python3  env-mypy/
 
	env-mypy/bin/pip install mypy==0.510 lxml==3.7.3
 

	
0 comments (0 inline, 0 general)