changeset 1054:4595a82f5a90

effecteval has a delete button on effect rows Ignore-this: 6a66737cd6857d2f7be4ec382e4890
author Drew Perttula <drewp@bigasterisk.com>
date Sun, 01 Jun 2014 10:22:14 +0000
parents 9937e2e3d17b
children 6ce00faec207
files bin/effecteval light9/effecteval/index.coffee light9/effecteval/index.html
diffstat 3 files changed, 24 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/bin/effecteval	Sun Jun 01 10:05:50 2014 +0000
+++ b/bin/effecteval	Sun Jun 01 10:22:14 2014 +0000
@@ -20,9 +20,17 @@
 sys.path.append("/home/drewp/projects/homeauto/lib")
 from cycloneerr import PrettyErrorHandler
 
-class EffectEdit(cyclone.web.RequestHandler):
+class EffectEdit(PrettyErrorHandler, cyclone.web.RequestHandler):
     def get(self):
         self.write(open("light9/effecteval/effect.html").read())
+    def delete(self):
+        graph = self.settings.graph
+        uri = URIRef(self.get_argument('uri'))
+        with graph.currentState(tripleFilter=(None, L9['effect'], uri)) as g:
+            song = ctx = list(g.subjects(L9['effect'], uri))[0]
+        self.settings.graph.patch(Patch(delQuads=[
+            (song, L9['effect'], uri, ctx),
+            ]))
 
 class SongEffects(PrettyErrorHandler, cyclone.web.RequestHandler):
     def post(self):
@@ -61,7 +69,7 @@
         out = []
         for s in songs:
             out.append({'uri': s, 'label': self.graph.label(s)})
-            out[-1]['effects'] = sorted(self.graph.objects(s, L9['effect']))
+            out[-1]['effects'] = [{'uri': uri} for uri in sorted(self.graph.objects(s, L9['effect']))]
         self.sendMessage({'songs': out})
         
         
--- a/light9/effecteval/index.coffee	Sun Jun 01 10:05:50 2014 +0000
+++ b/light9/effecteval/index.coffee	Sun Jun 01 10:22:14 2014 +0000
@@ -12,8 +12,18 @@
 dropped = (songTargetUri, dropUri) ->
   $.post('songEffects', {uri: songTargetUri, drop: dropUri})
 
+deleteEffect = (uri) ->
+  $.ajax
+    type: 'DELETE'
+    url: 'effect?' + $.param({uri: uri})
+  console.log("del", uri)
+  
 reconnectingWebSocket "ws://localhost:8070/songEffectsUpdates", (msg) ->
-  console.log(msg.songs)
+  for s in msg.songs
+    for e in s.effects
+      do (e) ->
+        e.deleteEffect = -> deleteEffect(e.uri)
+
   model.songs(msg.songs)
   
 ko.applyBindings(model)
--- a/light9/effecteval/index.html	Sun Jun 01 10:05:50 2014 +0000
+++ b/light9/effecteval/index.html	Sun Jun 01 10:22:14 2014 +0000
@@ -14,7 +14,9 @@
         <a class="song" data-bind="attr: {href: uri}">Song <span data-bind="text: label"></span></a>
         <ul>
           <!-- ko foreach: effects -->
-          <li><a class="effect" data-bind="attr: {href: 'effect?'+jQuery.param({uri: $data})}, text: $data"></a></li>
+          <li>
+            <a class="effect" data-bind="attr: {href: 'effect?'+jQuery.param({uri: uri})}, text: uri"></a> <button data-bind="click: deleteEffect">Delete</button>
+          </li>
           <!-- /ko -->
           <li class="dropTarget" data-bind="event: {dragover: $root.dragover, dragenter: $root.dragover, drop: function(data, event) { $root.drop(uri, event); }}">Add another (drop a sub or effect class)</li>
         </ul>