Mercurial > code > home > repos > light9
changeset 1735:fa11008d9b22
fix viewstate tracking. zoom current notes with the time slider.
Ignore-this: ed3f5322d71aab3025bc4c52951d1dfc
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Tue, 15 May 2018 07:08:11 +0000 |
parents | 15cdf021c07f |
children | 70c7022a1b6e |
files | light9/web/timeline/timeline-elements.html light9/web/timeline/timeline.coffee |
diffstat | 2 files changed, 35 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/light9/web/timeline/timeline-elements.html Tue May 15 06:33:39 2018 +0000 +++ b/light9/web/timeline/timeline-elements.html Tue May 15 07:08:11 2018 +0000 @@ -1,4 +1,5 @@ <link rel="import" href="/lib/polymer/polymer.html"> +<link rel="import" href="/lib/polymer/lib/utils/render-status.html"> <link rel="import" href="/lib/iron-resizable-behavior/iron-resizable-behavior.html"> <link rel="import" href="/lib/iron-ajax/iron-ajax.html"> <link rel="import" href="light9-timeline-audio.html"> @@ -201,6 +202,9 @@ <dom-module id="light9-timeline-time-axis"> <template> <style> + :host { + display: block; + } div { width: 100%; height: 31px;
--- a/light9/web/timeline/timeline.coffee Tue May 15 06:33:39 2018 +0000 +++ b/light9/web/timeline/timeline.coffee Tue May 15 07:08:11 2018 +0000 @@ -110,8 +110,8 @@ songPlaying: {type: Boolean, notify: true} selection: {type: Object, notify: true} @getter_observers: [ - 'setSong(playerSong, followPlayerSong)', - 'onGraph(graph)', + '_onSong(playerSong, followPlayerSong)', + '_onGraph(graph)', '_onSongDuration(songDuration, viewState)', '_onSongTime(songTime, viewState)', ] @@ -134,48 +134,42 @@ setTimeout((()=>ac.setAdjuster(adjId, makeAdjustable)),10) ko.computed(@zoomOrLayoutChanged.bind(@)) - setTimeout => - @trackMouse() - @bindKeys() - @bindWheelZoom(@dia) - setTimeout => # depends on child node being ready - @forwardMouseEventsToAdjustersCanvas() - , 400 + @trackMouse() + @bindKeys() + @bindWheelZoom(@dia) - @makeZoomAdjs() + @forwardMouseEventsToAdjustersCanvas() - zoomed = @$.zoomed - setupDrop(@$.dia.shadowRoot.querySelector('svg'), - zoomed.$.rows, @, zoomed.onDrop.bind(zoomed)) - - setInterval(@updateDebugSummary.bind(@), 100) - , 500 + @makeZoomAdjs() + setInterval(@updateDebugSummary.bind(@), 100) @addEventListener('iron-resize', @_onIronResize.bind(@)) - setTimeout(@_onIronResize.bind(@), 1000) # when children are packed - - #if anchor == loadtest - # add note and delete it repeatedly - # disconnect the graph, make many notes, drag a point over many steps, measure lag somewhere + Polymer.RenderStatus.afterNextRender(this, @_onIronResize.bind(@)) + #zoomed = @$.zoomed + #setupDrop(@dia.shadowRoot.querySelector('svg'), + # zoomed.$.rows, @, zoomed.onDrop.bind(zoomed)) + _onIronResize: -> @viewState.setWidth(@offsetWidth) @viewState.audioY(@$.audio.offsetTop) @viewState.audioH(@$.audio.offsetHeight) - @viewState.zoomedTimeY(@$.zoomed.$.time.offsetTop) if @$.zoomed?.$?.time? - @viewState.zoomedTimeH(30) #@$.zoomed.$.time.offsetHeight) - - log('editor resized') + if @$.zoomed?.$?.time? + @viewState.zoomedTimeY(@$.zoomed.$.time.offsetTop) + @viewState.zoomedTimeH(@$.zoomed.$.time.offsetHeight) + _onSongTime: (t) -> @viewState.cursor.t(t) + _onSongDuration: (d) -> d = 700 if d < 1 # bug is that asco isn't giving duration, but 0 makes the scale corrupt @viewState.zoomSpec.duration(d) - setSong: (s) -> + _onSong: (s) -> @song = @playerSong if @followPlayerSong - onGraph: (graph) -> + + _onGraph: (graph) -> @project = new Project(graph) updateDebugSummary: -> @@ -190,11 +184,12 @@ zoomOrLayoutChanged: -> vs = @viewState - vs.width() + dependOn = [vs.zoomSpec.t1(), vs.zoomSpec.t2(), vs.width()] + + @$.zoomed.gatherNotes() if @$.zoomed?.gatherNotes? # todo: these run a lot of work purely for a time change if @$.zoomed?.$?.audio? - vs.zoomSpec.t1() #@dia.setTimeAxis(vs.width(), @$.zoomed.$.audio.offsetTop, vs.zoomInX) @$.adjustersCanvas.updateAllCoords() @@ -248,11 +243,11 @@ valForPos = (pos) => x = pos.e(1) - t = @fullZoomX.invert(x) + t = @viewState.fullZoomX.invert(x) @setAdjuster('zoom-left', => new AdjustableFloatObservable({ observable: @viewState.zoomSpec.t1, getTarget: () => - $V([@fullZoomX(@viewState.zoomSpec.t1()), yMid()]) + $V([@viewState.fullZoomX(@viewState.zoomSpec.t1()), yMid()]) getSuggestedTargetOffset: () => $V([50, 0]) getValueForPos: valForPos })) @@ -260,7 +255,7 @@ @setAdjuster('zoom-right', => new AdjustableFloatObservable({ observable: @viewState.zoomSpec.t2, getTarget: () => - $V([@fullZoomX(@viewState.zoomSpec.t2()), yMid()]) + $V([@viewState.fullZoomX(@viewState.zoomSpec.t2()), yMid()]) getSuggestedTargetOffset: () => $V([-50, 0]) getValueForPos: valForPos })) @@ -315,7 +310,7 @@ super.ready() @addEventListener('iron-resize', @update.bind(@)) - @update() + Polymer.RenderStatus.afterNextRender(this, @update.bind(@)) @$.rows.appendChild(@renderer.view); @@ -331,6 +326,8 @@ onGraph: -> @graph.runHandler(@gatherNotes.bind(@), 'zoom notes') + # not working- worked around in zoomOrLayoutChanged + #ko.computed(@gatherNotes.bind(@)) gatherNotes: -> U = (x) => @graph.Uri(x) @@ -351,6 +348,7 @@ curveWidthCalc = () => @_curveWidth(@worldPts) h = 150 #@offsetHeight + dependOn = [@viewState.zoomSpec.t1(), @viewState.zoomSpec.t2(), @viewState.width()] screenPts = ($V([@viewState.zoomInX(pt.e(1)), @offsetTop + (1 - pt.e(2)) * h]) for pt in @worldPts) graphics.beginFill(0xFF3300); graphics.lineStyle(4, 0xffd900, 1)