diff --git a/src/core/js/ext_bookmarks.js b/src/core/js/ext_bookmarks.js index 4685d44ded90d6a68c31533c696ad1bfa6799dc2..29173e63da4f3f0d056e15d7ef25645fa1613c20 100644 --- a/src/core/js/ext_bookmarks.js +++ b/src/core/js/ext_bookmarks.js @@ -574,10 +574,8 @@ var ext_bookmarks = function ($, logger, config) { if ($("#" + row_id).length > 0) { return; } - const button_html = $(`<div class="row" id=${row_id}> - <p class="text-end"> + 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> - </p> </div>`)[0]; // Add to query results box @@ -590,17 +588,19 @@ var ext_bookmarks = function ($, logger, config) { const add_query_results_to_bookmarks = async function () { const query_string = get_query_from_response(); - const waiting_id = "caosdb-add-to-bookamrks-waiting-notification"; const waiting_notification = createWaitingNotification( - "Adding results to bookmarks. Please wait and do not reload the page.", id = waiting_id); - $("#caosdb-add-query-to-bookmarks-row").append(waiting_notification); + "Adding results to bookmarks. Please wait and do not reload the page."); + const bookmarks_row = $("#caosdb-add-query-to-bookmarks-row"); + bookmarks_row.find("button").hide(); + bookmarks_row.append(waiting_notification); const resp = await query(query_string); for (const eid of resp) { bookmark_storage.setItem(get_key(getEntityID(eid)), getEntityID(eid)); } // re-init for correct display of counter and entities on page init(); - $("#" + waiting_id).remove(); + removeAllWaitingNotifications(bookmarks_row); + bookmarks_row.find("button").prop("disabled", true).show(); } /** @@ -618,7 +618,7 @@ var ext_bookmarks = function ($, logger, config) { return select_string + query_string.slice(query_string.indexOf(" ") + 1); } if (test_string.startsWith("select")) { - return select_string + query_string.slice(query_string.indexOf("FROM ") + 5); + return select_string + query_string.slice(test_string.indexOf("from ") + 5); } } @@ -628,7 +628,7 @@ var ext_bookmarks = function ($, logger, config) { const get_query_from_response = function () { const orig_query = $(".caosdb-query-response-string")[0].innerText; - return get_select_id_query_string(orig_query); + return get_select_id_query_string(orig_query.trim()); } /** @@ -798,4 +798,4 @@ $(document).ready(function () { ext_bookmarks = ext_bookmarks($, log.getLogger("ext_bookmarks"), config); caosdb_modules.register(ext_bookmarks); } -}); +}); \ No newline at end of file diff --git a/src/core/js/webcaosdb.js b/src/core/js/webcaosdb.js index 87a63ed5da002e1f74e4c546d025c771017eccd1..efa28c9b39921df3e02a25ec95d4601f752fa288 100644 --- a/src/core/js/webcaosdb.js +++ b/src/core/js/webcaosdb.js @@ -607,7 +607,7 @@ this.transformation = new function () { * @return {XMLDocument} xslt script */ this.retrieveEntityXsl = async function _rEX(root_template) { - const _root = root_template || '<xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml"><div class="root"><xsl:apply-templates select="Response/*" mode="entities"/></div></xsl:template>'; + const _root = root_template || '<xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml"><div class="root"><xsl:apply-templates select="Response/child::*" mode="entities"/></div></xsl:template>'; var entityXsl = await transformation.retrieveXsltScript("entity.xsl"); var commonXsl = await transformation.retrieveXsltScript("common.xsl"); var errorXsl = await transformation.retrieveXsltScript('messages.xsl'); @@ -1313,7 +1313,7 @@ var queryForm = new function () { var submithandler = function () { // store current query var queryField = form.query; - var value = queryField.value.toUpperCase(); + var value = queryField.value.toUpperCase().trim(); if (typeof value == "undefined" || value.length == 0) { return; } @@ -1327,7 +1327,7 @@ var queryForm = new function () { paging = form.P.value } - queryForm.redirect(queryField.value, paging); + queryForm.redirect(queryField.value.trim(), paging); }; $("#caosdb-query-textarea").on("keydown", (e) => { @@ -1510,8 +1510,9 @@ function createErrorNotification(msg) { * @param {String} id, optional, the id of the message div. Default is empty * @return {HTMLElement} A div with class `caosdb-preview-waiting-notification`. */ -function createWaitingNotification(info, id = "") { - return $('<div class="' + globalClassNames.WaitingNotification + '" id="' + id + '">' + info + '</div>')[0]; +function createWaitingNotification(info, id) { + id = id ? `id="${id}"` : ""; + return $(`<div class="${globalClassNames.WaitingNotification}" ${id}>${info}</div>`)[0]; } /** @@ -1521,7 +1522,7 @@ function createWaitingNotification(info, id = "") { * @return {HTMLElement} The parameter `elem`. */ function removeAllWaitingNotifications(elem) { - $(elem.getElementsByClassName(globalClassNames.WaitingNotification)).remove(); + $(elem).find(`.${globalClassNames.WaitingNotification}`).remove(); return elem; } @@ -1926,4 +1927,4 @@ class _CaosDBModules { var caosdb_modules = new _CaosDBModules() -$(document).ready(initOnDocumentReady); +$(document).ready(initOnDocumentReady); \ No newline at end of file diff --git a/src/core/xsl/entity.xsl b/src/core/xsl/entity.xsl index d562bf99f7611b976e10d5349d0c99972d6d8fdd..92f08ea70645a8282f97f364c9fc4143f37afd6a 100644 --- a/src/core/xsl/entity.xsl +++ b/src/core/xsl/entity.xsl @@ -25,6 +25,10 @@ <xsl:output method="html"/> <!-- These little colored Rs, RTs, Ps, and Fs which hilite the beginning of a new entity. --> + <xsl:template match="Entity" mode="entity-heading-label"> + <span class="badge caosdb-f-entity-role caosdb-label-entity me-1" + title="This is an entity. The role is not specified.">E</span> + </xsl:template> <xsl:template match="Property" mode="entity-heading-label"> <span class="badge caosdb-f-entity-role caosdb-label-property me-1" data-entity-role="Property" title="This entity is a Property.">P</span> @@ -98,7 +102,7 @@ </div> </xsl:template> <!-- Main entry for ENTITIES --> - <xsl:template match="Property|Record|RecordType|File" mode="entities"> + <xsl:template match="Property|Record|RecordType|File|Response/Entity" mode="entities"> <div class="card caosdb-entity-panel mb-2"> <xsl:apply-templates select="Version" mode="entity-version-marker"/> <xsl:attribute name="id">