From 7c911fb334a93518973d0a3c97dd89d36a8be3d0 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Thu, 21 Oct 2021 11:20:07 +0200
Subject: [PATCH] ENH: Early return for add_query_to_bookmarks_button if no
 results

---
 src/core/js/ext_bookmarks.js             | 12 +++++++++---
 src/core/xsl/query.xsl                   |  2 +-
 test/core/js/modules/ext_bookmarks.js.js |  4 ++--
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/core/js/ext_bookmarks.js b/src/core/js/ext_bookmarks.js
index 29173e63..d9da4636 100644
--- a/src/core/js/ext_bookmarks.js
+++ b/src/core/js/ext_bookmarks.js
@@ -569,11 +569,17 @@ var ext_bookmarks = function ($, logger, config) {
      * Add a button to add all query results to bookmarks.
      */
     const add_add_query_results_button = function () {
-        const row_id = "caosdb-add-query-to-bookmarks-row"
+        const row_id = "caosdb-f-add-query-to-bookmarks-row"
         // do nothing if already existing
         if ($("#" + row_id).length > 0) {
             return;
         }
+
+        // do nothing if no results
+        if ($(".caosdb-query-response-results").text().trim() == "0") {
+            return;
+        }
+
         const button_html = $(`<div class="text-end" id=${row_id}>
         <button class="btn btn-link" onclick="ext_bookmarks.add_query_results_to_bookmarks();">Bookmark all query results</button>
 </div>`)[0];
@@ -590,7 +596,7 @@ var ext_bookmarks = function ($, logger, config) {
         const query_string = get_query_from_response();
         const waiting_notification = createWaitingNotification(
             "Adding results to bookmarks. Please wait and do not reload the page.");
-        const bookmarks_row = $("#caosdb-add-query-to-bookmarks-row");
+        const bookmarks_row = $("#caosdb-f-add-query-to-bookmarks-row");
         bookmarks_row.find("button").hide();
         bookmarks_row.append(waiting_notification);
         const resp = await query(query_string);
@@ -627,7 +633,7 @@ var ext_bookmarks = function ($, logger, config) {
      */
     const get_query_from_response = function () {
 
-        const orig_query = $(".caosdb-query-response-string")[0].innerText;
+        const orig_query = $(".caosdb-f-query-response-string")[0].innerText;
         return get_select_id_query_string(orig_query.trim());
     }
 
diff --git a/src/core/xsl/query.xsl b/src/core/xsl/query.xsl
index 926bf907..702a390f 100644
--- a/src/core/xsl/query.xsl
+++ b/src/core/xsl/query.xsl
@@ -56,7 +56,7 @@
           <div class="col-sm-10 caosdb-overflow-box">
             <div class="caosdb-overflow-content">
               <span>Query: </span>
-              <span class="caosdb-query-response-string">
+              <span class="caosdb-f-query-response-string">
                 <xsl:value-of select="@string"/>
               </span>
             </div>
diff --git a/test/core/js/modules/ext_bookmarks.js.js b/test/core/js/modules/ext_bookmarks.js.js
index a9397d10..8130fe42 100644
--- a/test/core/js/modules/ext_bookmarks.js.js
+++ b/test/core/js/modules/ext_bookmarks.js.js
@@ -210,7 +210,7 @@ QUnit.test("select-query extraction", function (assert) {
               <div class="col-sm-10 caosdb-overflow-box">
                    <div class="caosdb-overflow-content">
                         <span>Query: </span>
-                        <span class = "caosdb-query-response-string">SELECT name, id FROM RECORD MusicalAnalysis</span>
+                        <span class = "caosdb-f-query-response-string">SELECT name, id FROM RECORD MusicalAnalysis</span>
                    </div>
               </div>
               <div class="col-sm-2 text-end">
@@ -224,4 +224,4 @@ QUnit.test("select-query extraction", function (assert) {
 
     assert.equal(ext_bookmarks.get_query_from_response(),
         "SELECT ID FROM RECORD MusicalAnalysis");
-});
+});
\ No newline at end of file
-- 
GitLab