eschutho commented on code in PR #19855:
URL: https://github.com/apache/superset/pull/19855#discussion_r872885684


##########
superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:
##########
@@ -17,153 +17,362 @@
  * under the License.
  */
 
-import React, { FunctionComponent } from 'react';
-import { AutoCompleteProps } from 'antd/lib/auto-complete';
+import React, { FunctionComponent, useState } from 'react';
 import { Radio } from 'src/components/Radio';
 import { AutoComplete, RadioChangeEvent } from 'src/components';
 import { Input } from 'src/components/Input';
 import StyledModal from 'src/components/Modal';
 import Button from 'src/components/Button';
-import { styled, t } from '@superset-ui/core';
+import {
+  styled,
+  t,
+  SupersetClient,
+  makeApi,
+  JsonResponse,
+  // DatasourceType,
+} from '@superset-ui/core';
+import { useSelector } from 'react-redux';
+import moment from 'moment';
+import rison from 'rison';
+import { createDatasource } from 'src/SqlLab/actions/sqlLab';
+import { addDangerToast } from 'src/components/MessageToasts/actions';
+import { UserWithPermissionsAndRoles as User } from 'src/types/bootstrapTypes';
+import {
+  DatasetRadioState,
+  EXPLORE_CHART_DEFAULT,
+  DatasetOwner,
+  DatasetOptionAutocomplete,
+  Query,
+  SqlLabExploreRootState,
+  getInitialState,
+} from 'src/SqlLab/types';
+// import { Dataset } from '@superset-ui/chart-controls';
+import { exploreChart } from 'src/explore/exploreUtils';
+
+// type ExploreDatasource = Dataset | Query;
 
 interface SaveDatasetModalProps {
   visible: boolean;
-  onOk: () => void;
   onHide: () => void;
-  handleDatasetNameChange: (e: React.FormEvent<HTMLInputElement>) => void;
-  handleSaveDatasetModalSearch: (searchText: string) => Promise<void>;
-  filterAutocompleteOption: (
-    inputValue: string,
-    option: { value: string; datasetId: number },
-  ) => boolean;
-  handleSaveDatasetRadioBtnState: (e: RadioChangeEvent) => void;
-  handleOverwriteCancel: () => void;
-  handleOverwriteDataset: () => void;
-  handleOverwriteDatasetOption: (
-    data: string,
-    option: Record<string, any>,
-  ) => void;
-  onChangeAutoComplete: () => void;
-  defaultCreateDatasetValue: string;
-  disableSaveAndExploreBtn: boolean;
-  saveDatasetRadioBtnState: number;
-  shouldOverwriteDataset: boolean;
-  userDatasetOptions: AutoCompleteProps['options'];
+  buttonTextOnSave: string;
+  buttonTextOnOverwrite: string;
+  modalDescription?: string;
+  datasource: Query;
 }
 
 const Styles = styled.div`
-  .smd-body {
+  .sdm-body {
     margin: 0 8px;
   }
-  .smd-input {
+  .sdm-input {
     margin-left: 45px;
     width: 401px;
   }
-  .smd-autocomplete {
+  .sdm-autocomplete {
     margin-left: 8px;
     width: 401px;
   }
-  .smd-radio {
+  .sdm-radio {
     display: block;
     height: 30px;
     margin: 10px 0px;
     line-height: 30px;
   }
-  .smd-overwrite-msg {
+  .sdm-overwrite-msg {
     margin: 7px;
   }
 `;
 
+const updateDataset = async (
+  dbId: number,
+  datasetId: number,
+  sql: string,
+  columns: Array<Record<string, any>>,
+  owners: [number],
+  overrideColumns: boolean,
+) => {
+  const endpoint = 
`api/v1/dataset/${datasetId}?override_columns=${overrideColumns}`;
+  const headers = { 'Content-Type': 'application/json' };
+  const body = JSON.stringify({
+    sql,
+    columns,
+    owners,
+    database_id: dbId,
+  });
+
+  const data: JsonResponse = await SupersetClient.put({
+    endpoint,
+    headers,
+    body,
+  });
+  return data.json.result;
+};
+
+// const getDatasourceState = (datasource: ExploreDatasource) => {
+//   if (datasource.type === DatasourceType.Dataset) return datasource as 
Dataset;
+//   return datasource as Query;
+// };
+
 // eslint-disable-next-line no-empty-pattern
 export const SaveDatasetModal: FunctionComponent<SaveDatasetModalProps> = ({
   visible,
-  onOk,
   onHide,
-  handleDatasetNameChange,
-  handleSaveDatasetRadioBtnState,
-  saveDatasetRadioBtnState,
-  shouldOverwriteDataset,
-  handleOverwriteCancel,
-  handleOverwriteDataset,
-  handleOverwriteDatasetOption,
-  defaultCreateDatasetValue,
-  disableSaveAndExploreBtn,
-  handleSaveDatasetModalSearch,
-  filterAutocompleteOption,
-  userDatasetOptions,
-  onChangeAutoComplete,
-}) => (
-  <StyledModal
-    show={visible}
-    title="Save or Overwrite Dataset"
-    onHide={onHide}
-    footer={
-      <>
-        {!shouldOverwriteDataset && (
-          <Button
-            disabled={disableSaveAndExploreBtn}
-            buttonStyle="primary"
-            onClick={onOk}
-          >
-            {t('Save & Explore')}
-          </Button>
-        )}
-        {shouldOverwriteDataset && (
-          <>
-            <Button onClick={handleOverwriteCancel}>Back</Button>
+  buttonTextOnSave,
+  buttonTextOnOverwrite,
+  modalDescription,
+  datasource,
+}) => {
+  const getDefaultDatasetName = () =>
+    `${datasource.tab} ${moment().format('MM/DD/YYYY HH:mm:ss')}`;
+  const [datasetName, setDatasetName] = useState(getDefaultDatasetName());
+  const [newOrOverwrite, setNewOrOverwrite] = useState(
+    DatasetRadioState.SAVE_NEW,
+  );
+  const [shouldOverwriteDataset, setShouldOverwriteDataset] = useState(false);
+  const [userDatasetOptions, setUserDatasetOptions] = useState<
+    DatasetOptionAutocomplete[]
+  >([]);
+  const [datasetToOverwrite, setDatasetToOverwrite] = useState<
+    Record<string, any>
+  >({});
+  const [autocompleteValue, setAutocompleteValue] = useState('');
+
+  const user = useSelector<SqlLabExploreRootState, User>(state =>
+    getInitialState(state),
+  );
+
+  const handleOverwriteDataset = async () => {
+    await updateDataset(
+      datasource.dbId,
+      datasetToOverwrite.datasetId,
+      datasource.sql,
+      // TODO: lyndsiWilliams - Define d

Review Comment:
   todo



-- 
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: notifications-unsubscr...@superset.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@superset.apache.org
For additional commands, e-mail: notifications-h...@superset.apache.org

Reply via email to