Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/105673


Change subject: Replace dump model loop with event triggered dump
......................................................................

Replace dump model loop with event triggered dump

Change-Id: Ia7bb40d07d3789837884b52ec966f5ca042967fc
---
M demos/ve/demo.js
1 file changed, 19 insertions(+), 32 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/73/105673/1

diff --git a/demos/ve/demo.js b/demos/ve/demo.js
index 065670c..0c170ed 100644
--- a/demos/ve/demo.js
+++ b/demos/ve/demo.js
@@ -11,7 +11,6 @@
        var currentTarget,
                $targetContainer = $( '.ve-demo-editor' ).eq( 0 ),
                $errorbox = $( '.ve-demo-error' ),
-               dumpModelLoopTimeoutId = null,
 
                // Widgets
                startTextInput = new OO.ui.TextInputWidget( { 'readOnly': true 
} ),
@@ -26,8 +25,8 @@
                logRangeButton = new OO.ui.PushButtonWidget(
                        { 'label': 'Log to console', 'disabled': true }
                ),
-               dumpModelOnceButton = new OO.ui.PushButtonWidget( { 'label': 
'Dump model once' } ),
-               dumpModelLoopToggle = new OO.ui.ToggleButtonWidget( { 'label': 
'Dump model every 500ms' } ),
+               dumpModelButton = new OO.ui.PushButtonWidget( { 'label': 'Dump 
model once' } ),
+               dumpModelChangeToggle = new OO.ui.ToggleButtonWidget( { 
'label': 'Dump model on change' } ),
                validateButton = new OO.ui.PushButtonWidget( { 'label': 
'Validate view and model' } );
 
        // Initialization
@@ -40,8 +39,8 @@
                endTextInput.$element,
                logRangeButton.$element,
                $( '<span 
class="ve-demo-utilities-commands-divider">&nbsp;</span>' ),
-               dumpModelOnceButton.$element,
-               dumpModelLoopToggle.$element,
+               dumpModelButton.$element,
+               dumpModelChangeToggle.$element,
                validateButton.$element
        );
 
@@ -73,6 +72,7 @@
                                                .promise().done( function () {
                                                        
target.$document[0].focus();
                                                        currentTarget = target;
+                                                       
dumpModelChangeToggle.emit( 'click' );
                                                } );
                                } );
 
@@ -83,7 +83,7 @@
                } );
        }
 
-       function dumpModelOnce () {
+       function dumpModel () {
                /*jshint loopfunc:true */
                // linear model dump
                var i, $li, $label, element, text, annotations, getKids,
@@ -158,26 +158,6 @@
                $( '#ve-dump' ).show();
        }
 
-       function dumpModelLoop () {
-               cancelDumpModelLoop();
-               dumpModelOnce();
-               dumpModelLoopTimeoutId = setTimeout( function () {
-                       if ( dumpModelLoopTimeoutId === null ) {
-                               // Don't trust browser clearTimeout (e.g. for 
IE)
-                               return;
-                       }
-                       dumpModelLoop();
-               }, 500 );
-       }
-
-       function cancelDumpModelLoop () {
-               if ( dumpModelLoopTimeoutId === null ) {
-                       return;
-               }
-               clearTimeout( dumpModelLoopTimeoutId );
-               dumpModelLoopTimeoutId = null;
-       }
-
        // Open initial page
 
        if ( /^#!\/src\/.+$/.test( location.hash ) ) {
@@ -204,18 +184,25 @@
                var start = startTextInput.getValue(),
                        end = endTextInput.getValue();
                // TODO: Validate input
-               console.dir( 
ve.instances[0].view.documentView.model.data.slice( start, end ) );
+               console.dir( 
currentTarget.surface.view.documentView.model.data.slice( start, end ) );
        } );
 
-       dumpModelOnceButton.on( 'click', dumpModelOnce );
-       dumpModelLoopToggle.on( 'click', function () {
-               if ( dumpModelLoopToggle.value ) {
-                       dumpModelLoop();
+       dumpModelButton.on( 'click', dumpModel );
+       dumpModelChangeToggle.on( 'click', function () {
+               if ( dumpModelChangeToggle.getValue() ) {
+                       dumpModel();
+                       currentTarget.surface.model.on( 'documentUpdate', 
documentUpdate );
                } else {
-                       cancelDumpModelLoop();
+                       currentTarget.surface.model.off( 'documentUpdate', 
documentUpdate );
                }
        } );
 
+       function documentUpdate () {
+               if ( dumpModelChangeToggle.getValue() ) {
+                       dumpModel();
+               }
+       }
+
        validateButton.on( 'click', function () {
                var failed = false;
                $( '.ve-ce-branchNode' ).each( function ( index, element ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/105673
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia7bb40d07d3789837884b52ec966f5ca042967fc
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to