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