rusackas commented on code in PR #43480:
URL: https://github.com/apache/superset/pull/43480#discussion_r3877999534
##########
superset/mcp_service/chart/schemas.py:
##########
@@ -1094,6 +1094,208 @@ def reject_sql_expression_on_dimensions(self) ->
"PivotTableChartConfig":
return self
+class InteractivePivotChartConfig(BaseChartConfig):
+ """Config for an extension-provided AG Grid interactive pivot
visualization.
+
+ This is intentionally separate from :class:`PivotTableChartConfig`, which
+ targets the OSS ``pivot_table_v2`` visualization.
+ """
+
+ model_config = ConfigDict(extra="ignore", populate_by_name=True)
+
+ chart_type: Literal["interactive_pivot"] = "interactive_pivot"
+ rows: List[ColumnRef] = Field(
+ ...,
+ min_length=1,
+ description=(
+ "Dimensions placed in the AG Grid Rows side-panel bucket, in
nesting order"
+ ),
+ )
+ columns: List[ColumnRef] = Field(
+ default_factory=list,
+ description=(
+ "Dimensions placed in the AG Grid Column Labels side-panel bucket"
+ ),
+ )
+ metrics: List[ColumnRef] = Field(
+ ...,
+ min_length=1,
+ description=(
+ "Value columns. Each metric's aggregate controls the SQL
aggregation "
+ "and its AG Grid group rollup (AVG/MIN/MAX map to avg/min/max;
additive "
+ "aggregates roll up with sum)."
+ ),
+ )
+ time_grain: TimeGrain | None = Field(
+ None,
+ description=(
+ "PT1H, P1D, P1W, P1M, P3M, or P1Y for the grouped dimension named "
+ "by temporal_column"
+ ),
+ validation_alias=AliasChoices("time_grain", "time_grain_sqla"),
+ )
+ filters: List[FilterConfig] | None = Field(
+ None,
+ description=(
+ "Structured filters (column/op/value). Do NOT use adhoc_filters or
"
+ "raw SQL expressions."
+ ),
+ )
+ series_limit: int | None = Field(
+ None,
+ description="Maximum number of pivot series",
+ ge=0,
+ le=50000,
+ )
+ series_limit_metric: ColumnRef | None = Field(
+ None,
+ description="Metric used to rank series when a series/cell limit
applies",
+ )
+ sort_descending: bool = Field(
+ True,
+ description="Sort the series-limit metric descending",
+ validation_alias=AliasChoices("sort_descending", "order_desc"),
+ )
+ row_limit: int = Field(10000, description="Maximum returned cells", ge=1,
le=50000)
+ show_row_group_counts: bool = Field(
+ True,
+ description="Show record counts beside row-group labels",
+ validation_alias=AliasChoices("show_row_group_counts",
"rowGroupCounts"),
+ )
+ show_row_totals: bool = Field(
+ False,
+ description="Show grand-total rows",
+ validation_alias=AliasChoices("show_row_totals", "rowTotals"),
+ )
+ show_column_totals: bool = Field(
+ False,
+ description="Show grand-total columns",
+ validation_alias=AliasChoices("show_column_totals", "colTotals"),
+ )
+ show_column_subtotals: bool = Field(
+ False,
+ description="Show subtotal columns for nested pivot groups",
+ validation_alias=AliasChoices("show_column_subtotals", "colSubTotals"),
+ )
+ value_format: str = Field(
+ "SMART_NUMBER",
+ max_length=50,
+ validation_alias=AliasChoices("value_format", "valueFormat"),
+ )
+ date_format: str | None = Field(
+ None,
+ description="D3 format for temporal dimensions (for example,
'%Y-%m-%d')",
+ max_length=50,
+ )
+ currency_format: CurrencyFormat | None = Field(
+ None,
+ description="Currency symbol applied to numeric metric values",
+ )
+ column_sort: Literal["key_a_to_z", "key_z_to_a"] | None = Field(
+ None,
+ description="Alphabetic ordering for generated pivot columns",
+ validation_alias=AliasChoices("column_sort", "colOrder"),
+ )
+ allow_render_html: bool = Field(
+ True,
+ description="Render applicable cell values as HTML",
+ )
+ expand_pivot_groups: bool = Field(
+ False,
+ description="Expand generated pivot column groups initially",
+ )
+ comparison_period: str | None = Field(
+ None,
+ min_length=1,
+ max_length=100,
+ description=(
+ "Relative time shift such as '1 year ago'. Must be paired with "
+ "comparison_type."
+ ),
+ validation_alias=AliasChoices("comparison_period", "time_compare"),
+ )
Review Comment:
@aminghadersohi please refute or apply this before merging, just so it
doesn't go un-addressed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]