Page MenuHomePhabricator

Compatibility layer error: No render when using from.transform
Open, HighPublic

Description

Screenshot 2023-04-26 at 2.16.12 PM.png (335×1 px, 53 KB)

https://en.wikipedia.beta.wmflabs.org/wiki/T335454

Graph renders without lines:

{
    "legends": [
        {
            "stroke": "color",
            "title": "Legend",
            "fill": "color"
        }
    ],
    "scales": [
        {
            "type": "linear",
            "name": "x",
            "domain": {
                "data": "chart",
                "field": "x"
            },
            "zero": false,
            "range": "width",
            "nice": true
        },
        {
            "type": "linear",
            "name": "y",
            "domain": {
                "data": "chart",
                "field": "y"
            },
            "zero": false,
            "range": "height",
            "nice": true
        },
        {
            "domain": {
                "data": "chart",
                "field": "series"
            },
            "type": "ordinal",
            "name": "color",
            "range": [
                "#0000aa",
                "#ff8000"
            ]
        }
    ],
    "version": 2,
    "marks": [
        {
            "type": "group",
            "marks": [
                {
                    "properties": {
                        "hover": {
                            "stroke": {
                                "value": "red"
                            }
                        },
                        "update": {
                            "stroke": {
                                "scale": "color",
                                "field": "series"
                            }
                        },
                        "enter": {
                            "y": {
                                "scale": "y",
                                "field": "y"
                            },
                            "x": {
                                "scale": "x",
                                "field": "x"
                            },
                            "stroke": {
                                "scale": "color",
                                "field": "series"
                            },
                            "strokeWidth": {
                                "value": 2.5
                            }
                        }
                    },
                    "type": "line"
                }
            ],
            "from": {
                "data": "chart",
                "transform": [
                    {
                        "groupby": [
                            "series"
                        ],
                        "type": "facet"
                    }
                ]
            }
        }
    ],
    "height": 150,
    "axes": [
        {
            "type": "x",
            "title": "X",
            "scale": "x",
            "format": "d",
            "properties": {
                "axis": {
                    "strokeWidth": {
                        "value": 2
                    },
                    "stroke": {
                        "value": "#54595d"
                    }
                },
                "ticks": {
                    "stroke": {
                        "value": "#54595d"
                    }
                },
                "title": {
                    "fill": {
                        "value": "#54595d"
                    }
                },
                "labels": {
                    "fill": {
                        "value": "#54595d"
                    }
                }
            },
            "grid": true
        },
        {
            "type": "y",
            "title": "Y",
            "scale": "y",
            "format": "d",
            "properties": {
                "title": {
                    "fill": {
                        "value": "#54595d"
                    }
                },
                "grid": {
                    "stroke": {
                        "value": "#54595d"
                    }
                },
                "ticks": {
                    "stroke": {
                        "value": "#54595d"
                    }
                },
                "axis": {
                    "strokeWidth": {
                        "value": 2
                    },
                    "stroke": {
                        "value": "#54595d"
                    }
                },
                "labels": {
                    "fill": {
                        "value": "#54595d"
                    }
                }
            },
            "grid": true
        }
    ],
    "data": [
        {
            "format": {
                "parse": {
                    "y": "integer",
                    "x": "integer"
                },
                "type": "json"
            },
            "name": "chart",
            "values": [
                {
                    "y": 10,
                    "series": "Y1 Series",
                    "x": 1
                },
                {
                    "y": 12,
                    "series": "Y1 Series",
                    "x": 2
                },
                {
                    "y": 6,
                    "series": "Y1 Series",
                    "x": 3
                },
                {
                    "y": 14,
                    "series": "Y1 Series",
                    "x": 4
                },
                {
                    "y": 2,
                    "series": "Y1 Series",
                    "x": 5
                },
                {
                    "y": 10,
                    "series": "Y1 Series",
                    "x": 6
                },
                {
                    "y": 7,
                    "series": "Y1 Series",
                    "x": 7
                },
                {
                    "y": 9,
                    "series": "Y1 Series",
                    "x": 8
                },
                {
                    "y": 2,
                    "series": "Y2 Series",
                    "x": 1
                },
                {
                    "y": 4,
                    "series": "Y2 Series",
                    "x": 2
                },
                {
                    "y": 6,
                    "series": "Y2 Series",
                    "x": 3
                },
                {
                    "y": 8,
                    "series": "Y2 Series",
                    "x": 4
                },
                {
                    "y": 13,
                    "series": "Y2 Series",
                    "x": 5
                },
                {
                    "y": 11,
                    "series": "Y2 Series",
                    "x": 6
                },
                {
                    "y": 9,
                    "series": "Y2 Series",
                    "x": 7
                },
                {
                    "y": 2,
                    "series": "Y2 Series",
                    "x": 8
                }
            ]
        }
    ],
    "width": 400
}

Event Timeline

Jdlrobson updated the task description. (Show Details)

Doesn't throw an error so won't be tracked, so marking as high.

Jdlrobson renamed this task from Compatibility layer error: No render to Compatibility layer error: No render when using from.transform.Apr 26 2023, 9:33 PM

Change 912377 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/extensions/Graph@master] Graphs using transforms should error

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

Change 911938 had a related patch set uploaded (by Jdlrobson; author: C. Scott Ananian):

[mediawiki/extensions/Graph@master] WIP Improvements to Vega5 translator

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

Change 912377 merged by jenkins-bot:

[mediawiki/extensions/Graph@master] Graphs using transforms should error

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

Change 912879 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/Graph@master] mapSchema: support the facet transform

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

Change 912878 had a related patch set uploaded (by Jdlrobson; author: C. Scott Ananian):

[mediawiki/extensions/Graph@master] GraphSandbox: show mapped schema even if it fails to parse

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

Change 912878 merged by jenkins-bot:

[mediawiki/extensions/Graph@master] GraphSandbox: show mapped schema even if it fails to parse

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

Change 911938 merged by jenkins-bot:

[mediawiki/extensions/Graph@master] Improvements to Vega5 translator: recursive mark clauses; embedded data

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

Change 912879 merged by jenkins-bot:

[mediawiki/extensions/Graph@master] mapSchema: support the facet transform

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

@cscott it looks like there is still a bug here.

I'm getting

{
			"name": "stats",
			"source": "alldata",
			"transform": [
				{
					"type": "aggregate",
					"groupby": [
						"date"
					],
					"summarize": [
						{
							"field": "value",
							"ops": [
								"sum"
							]
						}
					]
				}
			]
		}

is being mapped to:

{
  "name": "stats",
  "source": "alldata",
  "transform": [
    {
      "type": "aggregate",
      "groupby": [
        "date"
      ],
      "fields": [
        "0"
      ],
      "ops": [
        {
          "field": "value",
          "ops": [
            "sum"
          ]
        }
      ],
      "as": [
        "[object Object]_0"
      ]
    }
  ]
},

I'm using https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Graph/+/912934/3/tests/jest/ext.graph.render/wikirest.json as input.

Not sure if compatibility layer include it but acc. to

https://vega.github.io/vega/docs/porting-guide/#marks

Mark definitions no longer allow embedded data transforms (e.g., {"type": "rect", "from": {"data": "table, "transform": [...]}}). Instead, all derived data sources must now be defined within a "data" definition block. However, as of Vega 3, "data" blocks are no longer constrained to only the top-level of a spec: they can be defined within group marks as well! For example, this flexibility allows creation of derived data sets within a faceted group.