From 7088ce651827fa3521a5f9bef1719a74bbb8589e Mon Sep 17 00:00:00 2001
From: abhimazu <mail.abhijeetmazumdar@gmail.com>
Date: Wed, 5 Mar 2025 12:16:53 -0500
Subject: [PATCH] Added optional config name for dataset download

---
 .../components/Data/LocalDatasets.tsx         | 93 +++++++++----------
 src/renderer/lib/transformerlab-api-sdk.ts    |  4 +-
 2 files changed, 45 insertions(+), 52 deletions(-)

diff --git a/src/renderer/components/Data/LocalDatasets.tsx b/src/renderer/components/Data/LocalDatasets.tsx
index 64e2d551..790fb9b7 100644
--- a/src/renderer/components/Data/LocalDatasets.tsx
+++ b/src/renderer/components/Data/LocalDatasets.tsx
@@ -145,57 +145,50 @@ export default function LocalDatasets() {
         }}
       >
         <>
-          <FormControl>
-            <Input
-              placeholder="Open-Orca/OpenOrca"
-              name="download-dataset-name"
-              endDecorator={
-                <Button
-                  onClick={async (e) => {
-                    const dataset = document.getElementsByName(
-                      'download-dataset-name'
-                    )[0].value;
-                    // only download if valid model is entered
-                    if (dataset) {
-                      // this triggers UI changes while download is in progress
-                      setDownloadingDataset(dataset);
-
-                      // Datasets can be very large so do this asynchronously
-                      fetch(chatAPI.Endpoints.Dataset.Download(dataset))
-                        .then((response) => {
-                          if (!response.ok) {
-                            console.log(response);
-                            throw new Error(`HTTP Status: ${response.status}`);
-                          }
-                          return response.json();
-                        })
-                        .then((response_json) => {
-                          if (response_json?.status == 'error') {
-                            throw new Error(response_json.message);
-                          }
-                          // now mutate:
-                          mutate();
-                          setDownloadingDataset(null);
-                        })
-                        .catch((error) => {
-                          setDownloadingDataset(null);
-                          alert('Download failed:\n' + error);
-                        });
-                    }
-                  }}
-                  startDecorator={
-                    downloadingDataset ? (
-                      <CircularProgress size="sm" thickness={2} />
-                    ) : (
-                      ''
-                    )
+        <FormControl>
+            <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>
+              <Input
+                placeholder="Open-Orca/OpenOrca"
+                name="download-dataset-name"
+                sx={{ flex: 7 }}
+              />
+              <Input
+                placeholder="Config name"
+                name="download-config-name"
+                sx={{ flex: 3 }}
+              />
+              <Button
+                onClick={async (e) => {
+                  const dataset = document.getElementsByName('download-dataset-name')[0].value;
+                  const configName = document.getElementsByName('download-config-name')[0]?.value;
+                  if (dataset) {
+                    setDownloadingDataset(dataset);
+                    fetch(chatAPI.Endpoints.Dataset.Download(dataset, configName))
+                      .then((response) => {
+                        if (!response.ok) {
+                          console.log(response);
+                          throw new Error(`HTTP Status: ${response.status}`);
+                        }
+                        return response.json();
+                      })
+                      .then((response_json) => {
+                        if (response_json?.status == 'error') {
+                          throw new Error(response_json.message);
+                        }
+                        mutate();
+                        setDownloadingDataset(null);
+                      })
+                      .catch((error) => {
+                        setDownloadingDataset(null);
+                        alert('Download failed:\n' + error);
+                      });
                   }
-                >
-                  {downloadingDataset ? 'Downloading' : 'Download 🤗 Dataset'}
-                </Button>
-              }
-              sx={{ width: '500px' }}
-            />
+                }}
+                startDecorator={downloadingDataset ? <CircularProgress size="sm" thickness={2} /> : ''}
+              >
+                {downloadingDataset ? 'Downloading' : 'Download 🤗 Dataset'}
+              </Button>
+            </Box>
           </FormControl>
           <>
             <Button
diff --git a/src/renderer/lib/transformerlab-api-sdk.ts b/src/renderer/lib/transformerlab-api-sdk.ts
index 819a3315..33ff1fea 100644
--- a/src/renderer/lib/transformerlab-api-sdk.ts
+++ b/src/renderer/lib/transformerlab-api-sdk.ts
@@ -1048,8 +1048,8 @@ Endpoints.Dataset = {
   Delete: (datasetId: string) =>
     API_URL() + 'data/delete?dataset_id=' + datasetId,
   Create: (datasetId: string) => API_URL() + 'data/new?dataset_id=' + datasetId,
-  Download: (datasetId: string) =>
-    API_URL() + 'data/download?dataset_id=' + datasetId,
+  Download: (datasetId: string, configName?: string) =>
+    API_URL() + 'data/download?dataset_id=' + datasetId + (configName ? '&config_name=' + configName : ''),
   LocalList: (generated: boolean = true) => API_URL() + 'data/list?generated=' + generated,
   GeneratedList: () => API_URL() + 'data/generated_datasets_list',
   FileUpload: (datasetId: string) =>
-- 
GitLab