From ef4d6829edbe3fb28b4eeab50da8b1d50a582d6a Mon Sep 17 00:00:00 2001
From: vkovtun <viktor.kovtun@id.ethz.ch>
Date: Fri, 28 Jul 2023 19:15:19 +0200
Subject: [PATCH] SSDM-13839: Added file/directory creation to the JavaScript
 part.

---
 .../src/js/server-data-store-client.html      | 17 ++++++++++++++++-
 .../src/js/server-data-store-client.js        |  8 ++++++++
 .../src/js/server-data-store-facade.js        | 19 +++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/api-data-store-server-javascript/src/js/server-data-store-client.html b/api-data-store-server-javascript/src/js/server-data-store-client.html
index cb8145ffd3b..6708374dd67 100644
--- a/api-data-store-server-javascript/src/js/server-data-store-client.html
+++ b/api-data-store-server-javascript/src/js/server-data-store-client.html
@@ -100,7 +100,22 @@
         </div>
     </form>
 
-
+    <h2>Create</h2>
+    <form onsubmit="return false;">
+        <div id="create-area">
+            <table>
+                <tr>
+                    <td><label>Name:</label></td>
+                    <td><input type="text" id="create-path" required></td>
+                </tr>
+                <tr>
+                    <td><label>Is directory:</label></td>
+                    <td><input type="checkbox" id="create-directory"></td>
+                </tr>
+            </table>
+            <button id="create-submit">Create</button>
+        </div>
+    </form>
 </div>
 </body>
 </html>
\ No newline at end of file
diff --git a/api-data-store-server-javascript/src/js/server-data-store-client.js b/api-data-store-server-javascript/src/js/server-data-store-client.js
index 99d0972b184..ea82199b132 100644
--- a/api-data-store-server-javascript/src/js/server-data-store-client.js
+++ b/api-data-store-server-javascript/src/js/server-data-store-client.js
@@ -223,5 +223,13 @@ window.onload = function() {
 			}));
 		}
 	};
+
+	document.getElementById("create-submit").onclick = function() {
+		datastoreServer.create(owner, document.getElementById("create-path").value.trim(), document.getElementById("create-directory").value,
+			(_ => {
+				showEntries();
+			}));
+	};
+
 }
 
diff --git a/api-data-store-server-javascript/src/js/server-data-store-facade.js b/api-data-store-server-javascript/src/js/server-data-store-facade.js
index e270ca214cd..9bfd200b354 100644
--- a/api-data-store-server-javascript/src/js/server-data-store-facade.js
+++ b/api-data-store-server-javascript/src/js/server-data-store-facade.js
@@ -497,6 +497,25 @@ DataStoreServer.prototype.move = function(sourceOwner, source, targetOwner, targ
 	
 }
 
+/**
+ * Create a file/directory within DSS
+ */
+DataStoreServer.prototype.create = function(owner, source, directory, action){
+	const data =  this.fillCommonParameters({
+		"method": "create",
+		"owner" : owner,
+		"source": source,
+		"directory": directory
+	});
+	this._internal.sendHttpRequest(
+		"POST",
+		"text/plain",
+		this._internal.datastoreUrl,
+		encodeParams(data),
+		(response) => action(response)
+	);
+}
+
 
 /**
  * ==================================================================================
-- 
GitLab