Mercurial > code > home > repos > light9
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