Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

139 lines
4.8 KiB
JSON

{
"$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"
}
}
}