{ "$schema": "../_schema.json", "format": "pptx", "element": "chart", "operations": { "add": true, "set": true, "get": true, "query": true, "remove": true }, "paths": { "stable": [ "/slide[N]/chart[@id=ID]" ], "positional": [ "/slide[N]/chart[N]" ] }, "note": "source of truth: Core/Chart/ChartHelper.cs ParseChartType() for the classic (c:chart) family, Core/Chart/ChartExBuilder.cs IsExtendedChartType() for the extended (cx:chart) family. Adding a new chartType value MUST update both the handler and this file in the same PR — contract tests enforce equivalence. Axis configuration: chart-level axis* props (axismin, axismax, axistitle, axisfont, ...) are Add-time only; for post-creation axis Set/Get use the chart-axis element.", "children": [ { "element": "chart-title", "pathSegment": "title", "cardinality": "0..1" }, { "element": "chart-legend", "pathSegment": "legend", "cardinality": "0..1" }, { "element": "chart-plotArea", "pathSegment": "plotArea", "cardinality": "0..1" }, { "element": "chart-axis", "pathSegment": "axis", "cardinality": "0..n", "key": "role", "keyValues": [ "category", "value", "value2", "series" ], "appliesWhen": { "chartType": [ "bar", "column", "line", "area", "scatter", "bubble", "radar", "stock", "combo" ] } }, { "element": "chart-series", "pathSegment": "series", "cardinality": "1..n" } ], "extends": [ "_shared/chart", "_shared/chart.docx-pptx", "_shared/chart.pptx-xlsx" ], "properties": { "direction": { "type": "string", "aliases": [ "rtl" ], "add": false, "set": true, "get": false, "examples": [ "--prop direction=rtl" ], "readback": "rtl|ltr", "description": "Chart-level reading direction. rtl stamps a:rtl=\"1\" on chartSpace c:txPr lvl1pPr so default text bodies (axis labels, data labels) render right-to-left for Arabic / Hebrew." }, "id": { "type": "number", "add": true, "set": false, "get": true, "description": "cNvPr chart id; @id in /chart[@id=ID]. add honors a caller-supplied id so dump-replay keeps it stable for spTgt animation refs; immutable after creation.", "readback": "integer chart shape id", "enforcement": "report" }, "zorder": { "type": "number", "description": "1-based z-order in slide shape tree. On add, positions the chart within the shape tree (1 = back). Post-creation reordering is not supported via Set; use Move/Swap on the chart graphic frame, or raw-set the spTree child order.", "aliases": ["z-order", "order"], "add": true, "set": false, "get": true, "examples": ["--prop zorder=1"], "readback": "1-based integer (1 = back)", "enforcement": "report" }, "chartType": { "type": "enum", "values": [ "bar", "column", "line", "pie", "doughnut", "area", "scatter", "bubble", "radar", "stock", "combo", "waterfall", "funnel", "treemap", "sunburst", "boxWhisker", "histogram", "pareto" ], "description": "pptx override: chartType is consumed by AddChart (creation only). Switching chart type post-creation is not supported — rebuild the chart with the new type. INPUT is lenient and accepts friendly aliases (stackedArea, bar3D, percentStackedColumn, stackedLine, percentStackedBar, ...) which round-trip correctly. READBACK (Get) is intentionally NOT symmetric with input: it returns the systematic `base_modifier` token form — e.g. area_stacked, area_percentStacked, bar_stacked, bar_percentStacked, bar3d, column_stacked, column_percentStacked, line_stacked, line_percentStacked, pieOfPie, barOfPie. This canonical-readback form is by design (one systematic token per geometry); do not expect the readback to echo the friendly input alias.", "aliases": ["type"], "add": true, "set": false, "get": true, "examples": ["--prop chartType=column", "--prop chartType=stackedArea # readback: area_stacked", "--prop chartType=bar3D # readback: bar3d"], "readback": "systematic base_modifier token (e.g. area_stacked, bar_percentStacked, column_stacked, line_stacked, bar3d, pieOfPie, barOfPie) — NOT the friendly input alias", "enforcement": "report" }, "name": { "type": "string", "add": true, "set": false, "get": true, "description": "shape name (DocProperties.Name).", "examples": [ "--prop name=\"Sales Chart\"" ], "readback": "shape name string", "enforcement": "report" } } }