villebro commented on a change in pull request #18569:
URL: https://github.com/apache/superset/pull/18569#discussion_r799215879



##########
File path: superset-frontend/src/explore/components/DataTableControl/index.tsx
##########
@@ -97,6 +114,126 @@ export const RowCount = ({
   />
 );
 
+enum FormatPickerValue {
+  formatted,
+  epoch,
+}
+
+const FormatPicker = ({
+  onChange,
+  value,
+}: {
+  onChange: any;
+  value: FormatPickerValue;
+}) => (
+  <Radio.Group value={value} onChange={onChange}>
+    <Space direction="vertical">
+      <Radio value={FormatPickerValue.epoch}>{t('Epoch')}</Radio>
+      <Radio value={FormatPickerValue.formatted}>{t('Formatted date')}</Radio>
+    </Space>
+  </Radio.Group>
+);

Review comment:
       As it's possible for temporal columns to be in non-epoch format (e.g. 
Sqlite and Druid come to mind), should we call the primary option "Raw format" 
or "Original format"? Also, "Formatted date" might be interpreted as referring 
to a `DATE` type as opposed to e.g. `TIMESTAMP` or `DATETIME`, so maybe we 
should consider calling this "Formatted timestamp" as the formatter also 
displays the time aspect of the value.

##########
File path: superset-frontend/src/explore/components/DataTablesPane/index.tsx
##########
@@ -172,33 +185,25 @@ export const DataTablesPane = ({
   errorMessage?: JSX.Element;
   queriesResponse: Record<string, any>;
 }) => {
-  const [data, setData] = useState<{
-    [RESULT_TYPES.results]?: Record<string, any>[];
-    [RESULT_TYPES.samples]?: Record<string, any>[];
-  }>(NULLISH_RESULTS_STATE);
-  const [isLoading, setIsLoading] = useState({
-    [RESULT_TYPES.results]: true,
-    [RESULT_TYPES.samples]: true,
-  });
-  const [columnNames, setColumnNames] = useState<{
-    [RESULT_TYPES.results]: string[];
-    [RESULT_TYPES.samples]: string[];
-  }>({
-    [RESULT_TYPES.results]: [],
-    [RESULT_TYPES.samples]: [],
-  });
-  const [error, setError] = useState(NULLISH_RESULTS_STATE);
+  const [data, setData] = useState(getDefaultDataTablesState(undefined));
+  const [isLoading, setIsLoading] = useState(getDefaultDataTablesState(true));
+  const [columnNames, setColumnNames] = 
useState(getDefaultDataTablesState([]));
+  const [columnTypes, setColumnTypes] = 
useState(getDefaultDataTablesState([]));
+  const [error, setError] = useState(getDefaultDataTablesState(''));

Review comment:
       nice cleanup 👍 

##########
File path: superset-frontend/src/explore/components/DataTableControl/index.tsx
##########
@@ -97,6 +114,128 @@ export const RowCount = ({
   />
 );
 
+enum FormatPickerValue {
+  formatted,
+  epoch,

Review comment:
       I think these should be Pascal case
   ```suggestion
     Formatted,
     Epoch,
   ```

##########
File path: superset/viz.py
##########
@@ -258,8 +258,11 @@ def get_samples(self) -> List[Dict[str, Any]]:
                 "to_dttm": None,
             }
         )
-        df = self.get_df_payload(query_obj)["df"]  # leverage caching logic
-        return df.to_dict(orient="records")
+        payload = self.get_df_payload(query_obj)  # leverage caching logic
+        return {
+            "data": payload["df"].to_dict(orient="records"),
+            "colnames": payload["colnames"],

Review comment:
       here too (requires small change in `viz.py`)

##########
File path: superset/views/core.py
##########
@@ -449,10 +449,12 @@ def get_raw_results(self, viz_obj: BaseViz) -> 
FlaskResponse:
         payload = viz_obj.get_df_payload()
         if viz_obj.has_error(payload):
             return json_error_response(payload=payload, status=400)
-        return self.json_response({"data": payload["df"].to_dict("records")})
+        return self.json_response(
+            {"data": payload["df"].to_dict("records"), "colnames": 
payload["colnames"]}

Review comment:
       let's also add "coltypes" here so we get this feature working for legacy 
charts 👍 




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