diff --git a/CHANGELOG.md b/CHANGELOG.md index 60242d138a183f92ba46b1be036839b3100ff354..52fd5fb3bdd26c649314179a2fd2597bcc0e8131 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 c37dcb1b62b75e5e2078ffb10670288441d2be07..ade186efd1c25ea3fe6505dcce954183cc06c1cf 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 961a51dc51584c3fe87496e54f9837fcec9de0b0..ffc44aadee2b0589ee2b21b8b9437933f6907492 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 8fde3bac9ce33742c5d79ca9e5ca03e2d0e0d094..ec9dfc75fe770ff4089e85a86583133ec5e84de5 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.