changeset 1593:6059de6659c3

move effects/ page into web/. fix homepage list. rm old subserver code. Ignore-this: df247afa405eb7e3a80891c2806d5fed
author Drew Perttula <drewp@bigasterisk.com>
date Thu, 01 Jun 2017 09:03:09 +0000
parents 7943daa149da
children 2dde8da33662
files bin/effecteval bin/subserver light9/subserver/effects2.coffee light9/subserver/effects2.html light9/web/effects/effects.coffee light9/web/effects/index.html light9/web/index.html makefile
diffstat 8 files changed, 115 insertions(+), 173 deletions(-) [+]
line wrap: on
line diff
--- a/bin/effecteval	Thu Jun 01 08:39:20 2017 +0000
+++ b/bin/effecteval	Thu Jun 01 09:03:09 2017 +0000
@@ -1,4 +1,5 @@
 #!bin/python
+
 from __future__ import division
 from run_local import log
 from twisted.internet import reactor
--- a/bin/subserver	Thu Jun 01 08:39:20 2017 +0000
+++ b/bin/subserver	Thu Jun 01 09:03:09 2017 +0000
@@ -17,45 +17,6 @@
 
 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']:
@@ -116,39 +77,9 @@
 
     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",
--- a/light9/subserver/effects2.coffee	Thu Jun 01 08:39:20 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-Polymer
-  is: "light9-effects"
-  properties: 
-    graph: {type: Object}
-    effectClasses: { type: Array }
-  ready: ->
-    @graph.runHandler(@getClasses.bind(@))
-
-  getClasses: ->
-    U = (x) => @graph.Uri(x)
-    @effectClasses = _.sortBy(@graph.subjects(U('rdf:type'), U(':Effect')))
-
-Polymer
-  is: "light9-effect-class"
-  properties: 
-    graph: {type: Object}
-    uri: {type: String}
-    
-  onAdd: ->
-    @$.songEffects.body = {drop: @uri}
-    @$.songEffects.generateRequest()
-    
-  onMomentaryPress: ->
-    @$.songEffects.body = {drop: @uri, event: 'start'}
-    @lastPress = @$.songEffects.generateRequest()
-    @lastPress.completes.then (request) =>
-      @lastMomentaryNote = request.response.note
-      
-  onMomentaryRelease: ->
-    return unless @lastMomentaryNote
-    @$.songEffects.body = {drop: @uri, note: @lastMomentaryNote}
-    @lastMomentaryNote = null
-    @$.songEffects.generateRequest()
-  
\ No newline at end of file
--- a/light9/subserver/effects2.html	Thu Jun 01 08:39:20 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-<!doctype html>
-<html>
-  <head>
-    <title>subserver effects2</title>
-    <meta charset="utf-8" />
-    <link rel="stylesheet" href="/style.css">
-    <script src="/lib/webcomponentsjs/webcomponents-lite.min.js"></script>
-    <link rel="import" href="/lib/polymer/polymer.html">
-    <link rel="import" href="/lib/iron-ajax/iron-ajax.html">
-    <script src="/lib/N3.js-pull61/browser/n3-browser.js"></script>
-    <script src="/lib/async/dist/async.js"></script>
-    <script src="/lib/underscore/underscore-min.js"></script>
-    <link rel="import" href="/rdfdb-synced-graph.html">
-    <link rel="import" href="/resource-display.html">
-  </head>
-  <body>
-    <!-- replaces effects.jade for subserver -->
-
-    <dom-module id="light9-effect-class">
-      <template>
-        <style>
-         :host {
-             display: block;
-             padding: 5px;
-             border: 1px solid green;
-             background: #1e271e;
-             margin-bottom: 3px;
-         }
-        </style>
-
-        Effect
-        <resource-display graph="{{graph}}" uri="{{uri}}" rename></resource-display>
-        <iron-ajax id="songEffects"
-                   url="/effectEval/songEffects"
-                   method="POST"
-                   content-type="application/x-www-form-urlencoded"></iron-ajax>
-          <button on-click="onAdd">Add to current song</button>
-          <button on-mousedown="onMomentaryPress"
-                  on-mouseup="onMomentaryRelease">Add momentary</button>
-
-      </template>
-    </dom-module>
-    
-    <dom-module id="light9-effects">
-      <template>
-        <style>
-        </style>
-        <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>
-  </body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/light9/web/effects/effects.coffee	Thu Jun 01 09:03:09 2017 +0000
@@ -0,0 +1,34 @@
+Polymer
+  is: "light9-effects"
+  properties: 
+    graph: {type: Object}
+    effectClasses: { type: Array }
+  ready: ->
+    @graph.runHandler(@getClasses.bind(@))
+
+  getClasses: ->
+    U = (x) => @graph.Uri(x)
+    @effectClasses = _.sortBy(@graph.subjects(U('rdf:type'), U(':Effect')))
+
+Polymer
+  is: "light9-effect-class"
+  properties: 
+    graph: {type: Object}
+    uri: {type: String}
+    
+  onAdd: ->
+    @$.songEffects.body = {drop: @uri}
+    @$.songEffects.generateRequest()
+    
+  onMomentaryPress: ->
+    @$.songEffects.body = {drop: @uri, event: 'start'}
+    @lastPress = @$.songEffects.generateRequest()
+    @lastPress.completes.then (request) =>
+      @lastMomentaryNote = request.response.note
+      
+  onMomentaryRelease: ->
+    return unless @lastMomentaryNote
+    @$.songEffects.body = {drop: @uri, note: @lastMomentaryNote}
+    @lastMomentaryNote = null
+    @$.songEffects.generateRequest()
+  
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/light9/web/effects/index.html	Thu Jun 01 09:03:09 2017 +0000
@@ -0,0 +1,62 @@
+<!doctype html>
+<html>
+  <head>
+    <title>subserver effects2</title>
+    <meta charset="utf-8" />
+    <link rel="stylesheet" href="/style.css">
+    <script src="/lib/webcomponentsjs/webcomponents-lite.min.js"></script>
+    <link rel="import" href="/lib/polymer/polymer.html">
+    <link rel="import" href="/lib/iron-ajax/iron-ajax.html">
+    <script src="/lib/N3.js-pull61/browser/n3-browser.js"></script>
+    <script src="/lib/async/dist/async.js"></script>
+    <script src="/lib/underscore/underscore-min.js"></script>
+    <link rel="import" href="/rdfdb-synced-graph.html">
+    <link rel="import" href="/resource-display.html">
+  </head>
+  <body>
+    <!-- replaces effects.jade for subserver -->
+
+    <dom-module id="light9-effect-class">
+      <template>
+        <style>
+         :host {
+             display: block;
+             padding: 5px;
+             border: 1px solid green;
+             background: #1e271e;
+             margin-bottom: 3px;
+         }
+        </style>
+
+        Effect
+        <resource-display graph="{{graph}}" uri="{{uri}}" rename></resource-display>
+        <iron-ajax id="songEffects"
+                   url="/effectEval/songEffects"
+                   method="POST"
+                   content-type="application/x-www-form-urlencoded"></iron-ajax>
+          <button on-click="onAdd">Add to current song</button>
+          <button on-mousedown="onMomentaryPress"
+                  on-mouseup="onMomentaryRelease">Add momentary</button>
+
+      </template>
+    </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="effects.js"></script>
+  </body>
+</html>
--- a/light9/web/index.html	Thu Jun 01 08:39:20 2017 +0000
+++ b/light9/web/index.html	Thu Jun 01 09:03:09 2017 +0000
@@ -1,11 +1,10 @@
 <!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>
@@ -23,11 +22,14 @@
          .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>
@@ -52,14 +54,21 @@
     <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>
     
--- a/makefile	Thu Jun 01 08:39:20 2017 +0000
+++ b/makefile	Thu Jun 01 09:03:09 2017 +0000
@@ -107,7 +107,7 @@
 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