diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js index 85645aabaf7d05cb7abe928b4792b5de6ef9e352..2cab099403fb5f454ed905f1d5527b8b4982e060 100644 --- a/src/core/js/edit_mode.js +++ b/src/core/js/edit_mode.js @@ -76,11 +76,54 @@ var edit_mode = new function () { } } + this.has_edit_fragment = function () { + const fragment = window.location.hash.substr(1); + console.log(fragment); + return fragment === "edit"; + } + + this.has_new_record_fragment = function () { + const fragment = window.location.hash.substr(1); + console.log(fragment); + return fragment === "new_record"; + } + this._init = function () { var target = $("#top-navbar").find("ul").first(); this.add_edit_mode_button(target, edit_mode.toggle_edit_mode); + + var after_setup_callback = () => {} // do nothing + if (this.has_edit_fragment()) { + // find first entity + const first_entity = $(".caosdb-entity-panel")[0]; + if(first_entity) { + window.localStorage["edit_mode"] = true; + after_setup_callback = () => { + console.log("start editing this entity", first_entity); + edit_mode.edit(first_entity); + } + } + } else if (this.has_new_record_fragment()) { + for (let entity of $(".caosdb-entity-panel")) { + // find first record type + console.log("is record type?", entity); + if(getEntityRole(entity) === "RecordType") { + window.localStorage["edit_mode"] = true; + const new_record = edit_mode.create_new_record(getEntityID(entity)); + after_setup_callback = () => { + console.log("start creating a new record for", entity); + new_record.then((new_record) => { + edit_mode.app.newEntity(new_record); + }, edit_mode.handle_error); + } + break; + } + } + } + + // intialize the edit mode panel and add all necessary buttons if the edit mode is if (this.is_edit_mode()) { - edit_mode.enter_edit_mode(); + edit_mode.enter_edit_mode().then(after_setup_callback); edit_mode.toggle_edit_panel(); // This is for the very specific case of reloading the // page while the edit mode is active on small screens @@ -88,6 +131,11 @@ var edit_mode = new function () { $(".caosdb-edit-min-width-warning").addClass("d-block"); } $('.caosdb-f-edit').css("transition", "top 1s"); + + // start editing or creating an entity + //if(after_setup_callback) { + //after_setup_callback(); + //} }