From be3e6d8bebcec3749a41eb38325c3f5a12040a88 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Sun, 21 Mar 2021 22:51:05 +0100 Subject: [PATCH] add test stub for #62 --- CHANGELOG.md | 2 ++ src/core/js/edit_mode.js | 34 ++++++++++++++++++++++++++++ src/core/xsl/entity_palette.xsl | 4 ++-- test/core/js/modules/edit_mode.js.js | 11 +++++++++ 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60242d13..52fd5fb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +* #62 - Newly created Properties and RecordTypes do not appear in edit mode + toolbox. * #156 - Edit mode for Safari 11 * #160 - Entity preview for Safari 11 * Several minor cosmetic flaws diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js index c37dcb1b..ade186ef 100644 --- a/src/core/js/edit_mode.js +++ b/src/core/js/edit_mode.js @@ -1575,6 +1575,7 @@ var edit_mode = new function() { if (!edit_mode.has_errors(app.entity)) { app.old = false; + edit_mode.update_toolbox(app.entity); } hintMessages.hintMessages(app.entity); edit_mode.unfreeze(); @@ -1593,6 +1594,39 @@ var edit_mode = new function() { return app; } + /** + * Add the newly inserted entity to the edit_mode toolbox or update the + * toolbox with the updated entity. + * + * @param {HTMLElement} entity + */ + this.update_toolbox = function(entity) { + const role = getEntityRole(entity); + var short_role = ""; + if (role == "Property") { + short_role = "p"; + } else if (role == "RecordType") { + short_role = "rt"; + } else { + // all others can be ignored + return; + } + + const id = `caosdb-f-edit-${short_role}-${getEntityID(entity)}`; + const li = `<li class="caosdb-f-edit-drag + list-group-item + caosdb-v-edit-drag" id="${id}">${getEntityName(entity)}</li>`; + + // replace existing or prepend new + const old_element = $(`#${id}`); + if (old_element.length > 0) { + old_element.replaceWith(li); + } else { + $(`.caosdb-f-edit-mode-drag-${role.toLowerCase()}-list`) + .prepend(li); + } + } + this.has_errors = function(entity) { return $(entity).find(".alert.alert-danger").length > 0; } diff --git a/src/core/xsl/entity_palette.xsl b/src/core/xsl/entity_palette.xsl index 961a51dc..ffc44aad 100644 --- a/src/core/xsl/entity_palette.xsl +++ b/src/core/xsl/entity_palette.xsl @@ -18,7 +18,7 @@ <button class="btn btn-default caosdb-f-edit-panel-new-button new-property caosdb-f-hide-on-empty-input" title="Create this Property." ><span class="glyphicon glyphicon-plus"></span></button> </span> </div> - <ul class="caosdb-v-edit-list"> + <ul class="caosdb-v-edit-list caosdb-f-edit-mode-drag-property-list"> <xsl:apply-templates select="./Property"/> </ul> </div> @@ -34,7 +34,7 @@ <button class="btn btn-default caosdb-f-edit-panel-new-button new-recordtype caosdb-f-hide-on-empty-input" title="Create this RecordType"><span class="glyphicon glyphicon-plus"></span></button> </span> </div> - <ul class="caosdb-v-edit-list"> + <ul class="caosdb-v-edit-list caosdb-f-edit-mode-drag-recordtype-list"> <xsl:apply-templates select="./RecordType"/> </ul> </div> diff --git a/test/core/js/modules/edit_mode.js.js b/test/core/js/modules/edit_mode.js.js index 8fde3bac..ec9dfc75 100644 --- a/test/core/js/modules/edit_mode.js.js +++ b/test/core/js/modules/edit_mode.js.js @@ -922,6 +922,17 @@ QUnit.test("fill_reference_drop_down", async function (assert) { }); +QUnit.test("update_toolbox", function(assert) { + assert.ok(edit_mode.update_toolbox, "available"); + const toolbox = $(`<div> + <div class="caosdb-f-edit-mode-drag-recordtype-list"></div> + <div class="caosdb-f-edit-mode-drag-property-list"> + <div id="caosdb-f-edit-p-15">oldproperty</div> + </div> + </div>`); + const entity = ""; + edit_mode.update_toolbox(entity); +} /** * Test the inner logic of retrieve_datatype_list. -- GitLab