codeant-ai-for-open-source[bot] commented on code in PR #39461:
URL: https://github.com/apache/superset/pull/39461#discussion_r3481834236


##########
superset-frontend/src/explore/components/controls/DatasourceControl/index.tsx:
##########
@@ -237,413 +216,388 @@ const preventRouterLinkWhileMetaClicked = (evt: 
React.MouseEvent) => {
   }
 };
 
-class DatasourceControl extends PureComponent<
-  DatasourceControlProps,
-  DatasourceControlState
-> {
-  static defaultProps = defaultProps;
-
-  constructor(props: DatasourceControlProps) {
-    super(props);
-    this.state = {
-      showEditDatasourceModal: false,
-      showChangeDatasourceModal: false,
-      showSaveDatasetModal: false,
-    };
-  }
-
-  onDatasourceSave = (datasource: Datasource) => {
-    // Cast to ExtendedDatasource for the component's internal use
-    this.props.actions.changeDatasource(datasource as ExtendedDatasource);
-    // Cast datasource for getTemporalColumns which expects Dataset | 
QueryResponse
-    const { temporalColumns, defaultTemporalColumn } = getTemporalColumns(
-      datasource as Parameters<typeof getTemporalColumns>[0],
-    );
-    const { columns } = datasource;
-    // the current granularity_sqla might not be a temporal column anymore
-    const timeCol = this.props.form_data?.granularity_sqla;
-    const isGranularitySqlaTemporal = columns.find(
-      ({ column_name }) => column_name === timeCol,
-    )?.is_dttm;
-    // the current main_dttm_col might not be a temporal column anymore
-    const isDefaultTemporal = columns.find(
-      ({ column_name }) => column_name === defaultTemporalColumn,
-    )?.is_dttm;
-
-    // if the current granularity_sqla is empty or it is not a temporal column 
anymore
-    // let's update the control value
-    if (datasource.type === 'table' && !isGranularitySqlaTemporal) {
-      const temporalColumn = isDefaultTemporal
-        ? defaultTemporalColumn
-        : temporalColumns?.[0];
-      this.props.actions.setControlValue(
-        'granularity_sqla',
-        temporalColumn || null,
+export default function DatasourceControl({
+  actions,
+  onChange = () => {},
+  value = null,
+  datasource,
+  form_data,
+  isEditable = true,
+  onDatasourceSave = null,
+  user,
+}: DatasourceControlProps) {
+  const theme = useTheme();
+
+  const [showEditDatasourceModal, setShowEditDatasourceModal] = 
useState(false);
+  const [showChangeDatasourceModal, setShowChangeDatasourceModal] =
+    useState(false);
+  const [showSaveDatasetModal, setShowSaveDatasetModal] = useState(false);
+
+  const handleDatasourceSave = useCallback(
+    (savedDatasource: Datasource) => {
+      // Cast to ExtendedDatasource for the component's internal use
+      actions.changeDatasource(savedDatasource as ExtendedDatasource);
+      // Cast datasource for getTemporalColumns which expects Dataset | 
QueryResponse
+      const { temporalColumns, defaultTemporalColumn } = getTemporalColumns(
+        savedDatasource as Parameters<typeof getTemporalColumns>[0],
       );
-    }
+      const { columns } = savedDatasource;
+      // the granularity_sqla might not be a temporal column anymore
+      const timeCol = form_data?.granularity_sqla;
+      const isGranularitySqlaTemporal = columns.find(
+        ({ column_name }) => column_name === timeCol,
+      )?.is_dttm;

Review Comment:
   ✅ **Customized review instruction saved!**
   
   **Instruction:**
   > Do not flag issues that are pre-existing and unchanged in a mechanical 
port; only comment on behavior introduced or modified by the current diff.
   
   **Applied to:**
     - `superset-frontend/src/explore/components/controls/DatasourceControl/**`
   
   ---
   💡 *To manage or update this instruction, visit: [CodeAnt AI 
Settings](https://app.codeant.ai/org/settings/learnings)*



-- 
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]

Reply via email to