jenkins-bot has submitted this change and it was merged.

Change subject: Support Vega2 graphs in VE
......................................................................


Support Vega2 graphs in VE

- VE now exclusively renders Vega 2 graphs
- Legacy graphs are now tagged with mw-graph-vega1 class and aren't rendered
  anymore by VE

Bug: T122750
Change-Id: I94e017ff2b6af484307966922c4fa05bca839a2f
---
M modules/ve-graph/tests/ext.graph.visualEditor.test.js
M modules/ve-graph/ve.ce.MWGraphNode.js
M modules/ve-graph/ve.dm.MWGraphNode.js
3 files changed, 40 insertions(+), 42 deletions(-)

Approvals:
  Esanders: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/modules/ve-graph/tests/ext.graph.visualEditor.test.js 
b/modules/ve-graph/tests/ext.graph.visualEditor.test.js
index fd53477..5135390 100644
--- a/modules/ve-graph/tests/ext.graph.visualEditor.test.js
+++ b/modules/ve-graph/tests/ext.graph.visualEditor.test.js
@@ -11,7 +11,7 @@
 
        var sampleSpecs = {
                areaGraph: {
-                       version: 1,
+                       version: 2,
                        width: 500,
                        height: 200,
                        padding: {
@@ -39,7 +39,7 @@
                                        zero: false,
                                        domain: {
                                                data: 'table',
-                                               field: 'data.x'
+                                               field: 'x'
                                        }
                                },
                                {
@@ -49,7 +49,7 @@
                                        nice: true,
                                        domain: {
                                                data: 'table',
-                                               field: 'data.y'
+                                               field: 'y'
                                        }
                                }
                        ],
@@ -76,11 +76,11 @@
                                                        },
                                                        x: {
                                                                scale: 'x',
-                                                               field: 'data.x'
+                                                               field: 'x'
                                                        },
                                                        y: {
                                                                scale: 'y',
-                                                               field: 'data.y'
+                                                               field: 'y'
                                                        },
                                                        y2: {
                                                                scale: 'y',
@@ -96,7 +96,7 @@
                },
 
                stackedAreaGraph: {
-                       version: 1,
+                       version: 2,
                        width: 500,
                        height: 200,
                        padding: {
@@ -138,12 +138,12 @@
                                                {
                                                        type: 'facet',
                                                        keys: [
-                                                               'data.x'
+                                                               'x'
                                                        ]
                                                },
                                                {
                                                        type: 'stats',
-                                                       value: 'data.y'
+                                                       value: 'y'
                                                }
                                        ]
                                }
@@ -156,7 +156,7 @@
                                        zero: false,
                                        domain: {
                                                data: 'table',
-                                               field: 'data.x'
+                                               field: 'x'
                                        }
                                },
                                {
@@ -194,13 +194,13 @@
                                                        {
                                                                type: 'facet',
                                                                keys: [
-                                                                       'data.c'
+                                                                       'c'
                                                                ]
                                                        },
                                                        {
                                                                type: 'stack',
-                                                               point: 'data.x',
-                                                               height: 'data.y'
+                                                               point: 'x',
+                                                               height: 'y'
                                                        }
                                                ]
                                        },
@@ -214,7 +214,7 @@
                                                                        },
                                                                        x: {
                                                                                
scale: 'x',
-                                                                               
field: 'data.x'
+                                                                               
field: 'x'
                                                                        },
                                                                        y: {
                                                                                
scale: 'y',
@@ -226,7 +226,7 @@
                                                                        },
                                                                        fill: {
                                                                                
scale: 'color',
-                                                                               
field: 'data.c'
+                                                                               
field: 'c'
                                                                        }
                                                                },
                                                                update: {
@@ -247,7 +247,7 @@
                },
 
                invalidAxesBarGraph: {
-                       version: 1,
+                       version: 2,
                        width: 500,
                        height: 200,
                        padding: {
@@ -275,7 +275,7 @@
                                        zero: false,
                                        domain: {
                                                data: 'table',
-                                               field: 'data.x'
+                                               field: 'x'
                                        }
                                },
                                {
@@ -285,7 +285,7 @@
                                        nice: true,
                                        domain: {
                                                data: 'table',
-                                               field: 'data.y'
+                                               field: 'y'
                                        }
                                }
                        ],
@@ -312,11 +312,11 @@
                                                        },
                                                        x: {
                                                                scale: 'x',
-                                                               field: 'data.x'
+                                                               field: 'x'
                                                        },
                                                        y: {
                                                                scale: 'y',
-                                                               field: 'data.y'
+                                                               field: 'y'
                                                        },
                                                        y2: {
                                                                scale: 'y',
@@ -353,25 +353,14 @@
                assert.deepEqual( node.getSpec(), {}, 'Setting a null spec 
resets the spec to an empty object' );
        } );
 
-       QUnit.test( 've.ce.MWGraphNode', 2, function ( assert ) {
+       QUnit.test( 've.ce.MWGraphNode', 1, function ( assert ) {
                var view = ve.test.utils.createSurfaceViewFromHtml(
                                '<div typeof="mw:Extension/graph"></div>'
                        ),
                        documentNode = view.getDocument().getDocumentNode(),
-                       node = documentNode.children[ 0 ],
-                       mwData = ve.copy( node.getModel().getAttribute( 'mw' ) 
);
+                       node = documentNode.children[ 0 ];
 
                assert.equal( node.type, 'mwGraph', 'Parsoid HTML graphs are 
properly recognized as graph nodes' );
-
-               ve.setProp( mwData, 'body', 'extsrc', undefined );
-               view.getModel().change(
-                       ve.dm.Transaction.newFromAttributeChanges(
-                               view.getModel().getDocument(),
-                               node.getOffset(),
-                               { mw: mwData }
-                       )
-               );
-               assert.equal( $( node.$element[ 0 ] ).text(), ve.msg( 
'graph-ve-no-spec' ), 'A null spec displays an error message' );
        } );
 
        QUnit.test( 've.ce.MWGraphNode.static', 2, function ( assert ) {
@@ -407,7 +396,7 @@
                                ]
                        },
                        areaGraphRemovalExpected = {
-                               version: 1,
+                               version: 2,
                                width: 500,
                                height: 200,
                                padding: {
diff --git a/modules/ve-graph/ve.ce.MWGraphNode.js 
b/modules/ve-graph/ve.ce.MWGraphNode.js
index 85d6277..d22d8d1 100644
--- a/modules/ve-graph/ve.ce.MWGraphNode.js
+++ b/modules/ve-graph/ve.ce.MWGraphNode.js
@@ -120,7 +120,9 @@
        // Clear element
        this.$graph.empty();
 
-       mw.loader.using( 'ext.graph.vega1' ).done( function () {
+       this.$element.toggleClass( 'mw-graph-vega1', 
this.getModel().isGraphLegacy() );
+
+       mw.loader.using( 'ext.graph.vega2' ).done( function () {
                node.$plot.detach();
 
                node.constructor.static.vegaParseSpec( 
node.getModel().getSpec(), node.$graph[ 0 ] ).then(
@@ -128,9 +130,7 @@
                                // HACK: We need to know which padding values 
Vega computes in case
                                // of automatic padding, but it isn't properly 
exposed in the view
                                node.$graph.append( node.$plot );
-                               // jscs:disable disallowDanglingUnderscores
-                               node.$plot.css( view._padding );
-                               // jscs:enable disallowDanglingUnderscores
+                               node.$plot.css( view._padding ); // jscs:ignore 
disallowDanglingUnderscores
                        },
                        function ( failMessageKey ) {
                                node.$graph.text( ve.msg( failMessageKey ) );
diff --git a/modules/ve-graph/ve.dm.MWGraphNode.js 
b/modules/ve-graph/ve.dm.MWGraphNode.js
index 9876aac..1c16cfd 100644
--- a/modules/ve-graph/ve.dm.MWGraphNode.js
+++ b/modules/ve-graph/ve.dm.MWGraphNode.js
@@ -55,7 +55,7 @@
 ve.dm.MWGraphNode.static.extensionName = 'graph';
 
 ve.dm.MWGraphNode.static.defaultSpec = {
-       version: 1,
+       version: 2,
        width: 400,
        height: 200,
        data: [
@@ -89,7 +89,7 @@
                        zero: false,
                        domain: {
                                data: 'table',
-                               field: 'data.x'
+                               field: 'x'
                        }
                },
                {
@@ -99,7 +99,7 @@
                        nice: true,
                        domain: {
                                data: 'table',
-                               field: 'data.y'
+                               field: 'y'
                        }
                }
        ],
@@ -123,11 +123,11 @@
                                enter: {
                                        x: {
                                                scale: 'x',
-                                               field: 'data.x'
+                                               field: 'x'
                                        },
                                        y: {
                                                scale: 'y',
-                                               field: 'data.y'
+                                               field: 'y'
                                        },
                                        y2: {
                                                scale: 'y',
@@ -251,6 +251,15 @@
        }
 };
 
+/**
+ * Is this graph using a legacy version of Vega?
+ *
+ * @return {boolean}
+ */
+ve.dm.MWGraphNode.prototype.isGraphLegacy = function () {
+       return !!( this.spec && this.spec.hasOwnProperty( 'version' ) && 
this.spec.version < 2 );
+};
+
 /* Registration */
 
 ve.dm.modelRegistry.register( ve.dm.MWGraphNode );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I94e017ff2b6af484307966922c4fa05bca839a2f
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/Graph
Gerrit-Branch: master
Gerrit-Owner: Ferdbold <fbol...@wikimedia.org>
Gerrit-Reviewer: Esanders <esand...@wikimedia.org>
Gerrit-Reviewer: Ferdbold <fbol...@wikimedia.org>
Gerrit-Reviewer: Jforrester <jforres...@wikimedia.org>
Gerrit-Reviewer: Yurik <yu...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to